fro*_*ton 7 authentication laravel single-page-application laravel-sanctum laravel-8
我正在尝试实施 Sanctum SPA 身份验证。尝试登录时出现以下错误(仅在生产中):
production.ERROR: Session store not set on request. {"userId":1,"exception":"[object] (RuntimeException(code: 0): Session store not set on request. at /app/vendor/laravel/framework/src/Illuminate/Http/Request.php:483)
遵循文档中的所有步骤。首先调用GET 请求,然后调用附加会话 cookie 的sanctum/csrf-cookieAPI POST 请求。login感谢您的任何提示!
我的login方法在 中AuthController.php,异常发生在第 28 行。
我的Http\Kernel.php文件包含 API 端点的中间件。
我的 API 端点位于routes/api.php
小智 24
添加StartSession到app/Http/Kernel.php:
protected $middleware = [
...
\Illuminate\Session\Middleware\StartSession::class,
];
Run Code Online (Sandbox Code Playgroud)
它对我有用。
小智 6
对于未来的您,解决问题的正确方法是:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
EnsureFrontendRequestsAreStateful类,通知您的应用程序/api 中间件利用有状态会话app/Http/Kernel.php'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
...
Run Code Online (Sandbox Code Playgroud)
以下两步非常关键
SANCTUM_STATEFUL_DOMAINS这可以通过在文件中添加密钥.env或修改文件中的有状态密钥的值来完成config/sanctum.php。origin或referer标头。此外,X-XSRF-TOKEN如果适用,请包含标头。