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"