我正在尝试在我的 Vue3 Ionic 移动应用程序上执行简单的令牌身份验证。我有两个独立的存储库 - 一个是 Laravel 10 后端中的 API,另一个是 Vue3 Ionic 应用程序,我使用 Sanctum 进行 Laravel 10 API 身份验证。
这是我的 API 身份验证端点:
public function createToken(CreateToken $request): JsonResponse
{
Log::info('LOGIN MOBILE REQUEST', [
'request' => $request->all(),
'token' => $request->user
->createToken($request->deviceName)
->plainTextToken
]);
return response()->json([
'token' => $request->user
->createToken($request->deviceName)
->plainTextToken
]);
}
问题是,当我非常奇怪地在移动应用程序上访问我的身份验证端点时,我收到了 419,这是用于基于会话的身份验证的 CSRF 内容。我不明白我如何以及为何从移动应用程序中收到 419。当我在手机上测试时,我只是通过手机上的 Android studio 启动它。我还在我的 API 中使用 Expose,并且 Expose 中的 URL 进入移动应用程序配置。所有 API 调用都工作得很好,只是我无法让 Laravel 理解这与 CSRF 无关。
让它有点奇怪 - 当我在桌面上测试相同的登录功能时,我的令牌没有问题,即使除了安装和初始设置之外,我没有做任何额外的配置。
有人知道这可能是什么吗?
我知道那是什么。万一其他人也有同样的问题。出于习惯,我遵循了文档并在
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
中启用了 app/Http/Kernel.php
,因为我的应用程序也需要网络身份验证。
因此,这必须处理一些条件中间件,我将根据我猜测的平台应用它。