-1

在您将其标记为重复之前:是的,过去 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 上一切正常。

但是,我在使其在生产中工作时遇到问题。我不明白我做错了什么,而且很长时间以来我一直在做同样的事情。由于某种原因,不再工作了。每次我在登录后请求资源时都会收到“未经身份验证”的响应。

4

1 回答 1

0

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,
    ],
于 2021-05-04T22:09:21.210 回答