php - Laravel 8,User = null,但会话仍有“_token”,会话持久性问题?
问题描述
问题:
在成功的初始“csrf-cookie”和“登录”请求之后,经过身份验证的用户似乎从所有后续请求的会话中消失。
$request->user()
并且Auth::user()
全部auth()-user()
返回null。
$request->session()->all()
只返回一个“_token”字段,$request->session()->has('users')
并且$request->session()->has('user')
都返回false。
语境:
这只发生在我的生产服务器上(我已经尝试了 Laravel Forge 服务器和我自己的服务器手动设置 Nginx)。
这是一个 SPA 后端,使用 Laravel 8。使用 Laravel 内置的 Sanctum 身份验证。使用数据库会话驱动程序(虽然我已经尝试了所有其他驱动程序,但驱动程序似乎不是问题,我可以在我的数据库中看到会话)。
我当前的会话配置(尽管我尝试了其他配置无济于事):
same_site = 'none'
domain = null
secure = true
http_only = true
我试过的:
无数的谷歌搜索,没有发现任何似乎适用于我的情况的问题或解决方案。
我已经尝试在问题发生之前和之后立即挖掘会话并请求对象(如问题部分所述)并且没有以这种方式获得任何有用的信息。
我尝试过使用会话配置...更改“相同站点”、“安全”等变量。
解决方案
我发现了问题,结果非常简单/愚蠢:我必须将\Illuminate\Session\Middleware\AuthenticateSession::class
中间件添加到我的路由中(特别是对我来说,在这种情况下它是添加到 'api' 中间件组)。
推荐阅读
- java - 如何将我的枚举代码转换为开关
- python - 使用 Mysys2 时为 GTK3+/PyGObject 使用哪个 Python 解释器
- python - 在 docker 镜像中安装 pyodbc
- ios - react-native xcode 10.1“config.h”文件未找到
- mysql - WordPress docker 容器不以 mysql:latest image 开头
- c# - 如何使用 MongoDB (ASP.NET Core 2.2) 访问深度嵌套的数组
- machine-learning - KNN算法在训练阶段做了什么?
- python - 为什么我的 ModelChoiceField 显示三个表单而不是两个表单,为什么它不读取我的选择?
- python-3.x - 选择导入文本文件的特定列
- python - discord.py 缺少类别 api 和枚举 def