为何将Cookie名从authToken改为token可解决Laravel-JWT认证问题?
问题解答
核心原因:Tymon/jwt-auth的默认配置规则
Tymon/jwt-auth包默认只会从名为token的Cookie里读取JWT令牌,这是它预设的读取逻辑。你把Cookie名称改成authToken后,包找不到对应的令牌数据,自然auth()->user()拿不到用户信息,接口就返回“未认证”了。
自定义Cookie名称的方法
要是想用authToken这类自定义名称,得修改jwt-auth的配置:
- 先发布配置文件(没发布过的话):
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
- 打开
config/jwt.php,找到cookie项,把值改成你要的名称:
'cookie' => 'authToken',
- 最后保证登录接口里设置的Cookie名称和这个配置一致,
auth门面就能正确从Cookie里取令牌了。
Laravel与React的令牌识别逻辑
不存在Laravel或React自动识别令牌的通用命名规则,核心是前后端认证配置要匹配:
- Laravel端:全靠jwt-auth的配置项指定Cookie名称来提取令牌
- React端:只要请求时开启
withCredentials: true让浏览器自动携带Cookie,不管Cookie叫什么,只要和后端配置对应就能正常认证
内容的提问来源于stack exchange,提问作者WPdev11
相关产品推荐
相关产品推荐

