Laravel 8 Sanctum SPA Auth - 未按要求设置会话存储

Posted

技术标签:

【中文标题】Laravel 8 Sanctum SPA Auth - 未按要求设置会话存储【英文标题】:Laravel 8 Sanctum SPA Auth - Session store not set on request 【发布时间】:2021-05-08 21:28:45 【问题描述】:

我正在尝试实施 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)

遵循the documentation 中的所有步骤。首先调用sanctum/csrf-cookie GET 请求,然后是我的API login POST 请求并附加会话cookie。感谢您的任何提示!

AuthController.php 中的我的 login 方法,异常发生在第 28 行。

我的 Http\Kernel.php 文件,其中包含 API 端点的中间件。

routes/api.php 中的我的 API 端点

【问题讨论】:

在问题中添加文本截图并不是一个好习惯。没有人可以从中复制/粘贴,搜索引擎在其中找不到任何内容。 【参考方案1】:

添加到app/Http/Kernel.php:

\Illuminate\Session\Middleware\StartSession::class

它对我有用。

【讨论】:

粘贴代码而不是粘贴图片会更有帮助 确实在答案中添加文本截图并不是一个好习惯。没有人可以从中复制/粘贴,搜索引擎在其中找不到任何内容。【参考方案2】:

在您的 .env 文件中检查 APP_URL=your app base url 是否正确。

【讨论】:

【参考方案3】:

身份验证路由必须在routes/web.php 文件中。

【讨论】:

这不正确,使用网络路由只是意味着你在使用网络中间人,那么你并没有得到 API 的好处。

以上是关于Laravel 8 Sanctum SPA Auth - 未按要求设置会话存储的主要内容,如果未能解决你的问题,请参考以下文章

Sanctum 和 Postman 的 SPA 身份验证问题

用于非 SPA 的 Laravel Sanctum API 令牌

带有 Vuejs 的 Laravel 7.x Sanctum (SPA) 总是返回 401 Unauthorized

如何使用 Laravel Sanctum 处理 SPA 和基于令牌的身份验证

如何在没有 SPA 或图形界面的情况下,仅通过 POSTMAN 访问 Laravel Sanctum 的 API 路由?

laravel sanctum SPA 身份验证受保护的路由返回 "message" : "unauthenticated"