php - Laravel Sanctum 在未经身份验证的情况下不断返回
问题描述
在您将其标记为重复之前:是的,过去 10 个小时我已经尝试了所有方法,但没有任何效果......
我试图:
- 将会话存储设置为 cookie
- 我已经设置了 SANCTUM 的有状态域、会话域,但问题仍然存在。
- 我也尝试过摆脱“EnsureFrontendRequesstAreStateful”中间件,因为它提到了一些 github 问题,但仍然没有用。
- 我还尝试在配置文件中将 SameSite 设置为“NONE”,仍然是同样的问题。
- 调试了我本地的所有内容,一切正常。只是不适用于生产。
更多细节:
- 圣所版本:2.9.2
- Laravel 版本:8.34.0
- PHP版本:7.4.3
- 数据库驱动程序和版本:MySQL Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
描述:
我有两个应用程序:Next.js 上的客户端和 Laravel + Sanctum 的后端 API。
所以基本上,在 localhost 上一切正常。
但是,我在使其在生产中工作时遇到问题。我不明白我做错了什么,而且很长时间以来我一直在做同样的事情。由于某种原因,不再工作了。每次我在登录后请求资源时都会收到“未经身份验证”的响应。
解决方案
SOLVED.
Goto your Kernel.php, under API, set these middlewares:
'api' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
推荐阅读
- python - 基于不同列中特定值的计算的新列
- android - 无法识别 Flutter 导入
- reactjs - 如何在 mern 堆栈中获取注册表单的国家/地区列表?
- google-apps-script - 将 ImportRange 生成的 Google 电子表格单元格值自动传输到另一个工作表和单元格
- wix - WIX:仅阻止更新某些旧版本
- c++ - 如何使用数组打印 10 位大数字的反转?
- mongodb - MongoDB $sample 很慢
- oauth-2.0 - 拒绝在框架中显示“google oauth2”,因为它将“X-Frame-Options”设置为“DENY”
- html - 如何使用 CSS 中的 :nth-child() 属性在列表中添加背景颜色(在链接中显示参考图像)
- asp.net-web-api - Postman 无法访问从 Visual Studio 2019 运行的基于 Windows 身份验证的 WebAPI