You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

October CMS vdomah JWT插件生成令牌无法被Flutter端请求路由识别

排查步骤

1. 后端中间件配置校验

  • vdomah/jwt-auth 插件默认封装了适配October CMS的中间件,不要直接使用Tymon原生的GetUserFromToken中间件,替换成插件自带的jwt.auth中间件即可,修改路由代码:
Route::post('storephoto', function (Work $Work, Request $request) {
    ...
    $Work->save();
})->middleware('jwt.auth');
  • 检查October CMS的.env文件是否正确配置了JWT_SECRET,确保值和你生成令牌时用的签名密钥一致,没有被缓存,执行php artisan config:clear清理配置缓存。

2. 请求头传递校验

  • 你在浏览器测GET路由返回token_not_provided属于正常现象,因为浏览器默认不会自动携带Authorization请求头,你需要用接口测试工具模拟请求,手动在请求头加上Authorization: Bearer 你的令牌值,先确认后端接口本身可以正常识别令牌。
  • 排查服务端配置是否丢弃了Authorization头:如果用了Nginx/Apache反向代理,需要显式配置保留Authorization头,Nginx参考配置:
add_header Access-Control-Allow-Headers Authorization;
proxy_pass_header Authorization;
  • Flutter侧请求头可以显式指定content-type,避免POST表单请求时头被覆盖:
headers: {
  'Authorization': 'Bearer $token',
  'Content-Type': 'application/x-www-form-urlencoded',
},

3. 令牌本身有效性校验

  • 把你打印出来的令牌复制到本地JWT解码工具,检查三个核心部分:
    • 头部的alg算法是不是和后端配置的签名算法一致(默认是HS256)
    • 载荷部分的iss、exp等声明是不是符合后端配置,exp有没有过期
    • 签名部分用后端的JWT_SECRET重新计算,确认和令牌第三部分一致,排除签名错误问题

4. 插件特殊配置校验

  • vdomah的JWT插件默认会从三个位置取令牌:请求头Authorization、请求参数token、Cookie,你可以临时修改后端路由代码先打印所有请求头,确认令牌是不是确实传递到了后端:
Route::post('storephoto', function (Request $request) {
    // 临时打印请求头排查
    dd($request->headers->all());
})->middleware('jwt.auth');

如果打印出来没有Authorization头,就可以定位是服务器配置丢弃了头,不是令牌本身的问题。

内容的提问来源于stack exchange,提问作者Giuseppes85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:45:04