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

Laravel5.1+Dingo API+JWT获取认证用户时401错误排查与解决

Laravel 5.1 + Dingo API + JWT 401 Unauthorized 问题排查与解决

遇到这种刚拿到有效token,但调用受api.auth保护的接口就返回401的情况,大概率是请求格式或配置细节出了问题,我来帮你一步步排查解决:

1. 最常见的原因:请求头格式错误

Dingo API的api.auth中间件默认要求Authorization头必须以Bearer 前缀开头,很多人容易忽略这个细节,直接把token填进去,导致中间件无法识别凭证。

解决方法:

在Postman的「Headers」标签中添加如下配置:

  • 键:Authorization
  • 值:Bearer + 你获取到的完整token(注意Bearer和token之间必须有一个空格)

示例:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjExMDQsImlzcyI6Imh0dHBzOi8vYXBwLmRpbmVhbmRnaWZ0LmNvbS9hcGkvYXV0aGVudGljYXRlIiwiaWF0IjoxNTE1NDE3NDQ0LCJleHAiOjE1MTU0MjEwNDQsIm5iZiI6MTUxNTQxNzQ0NCwianRpIjoiNzk2dXZCQnhreGtpSDJneiJ9.XJiH3v95-FJOVYT_XfWIbQZ_lHqYDmWRR-jIHp6uoag

2. 验证JWT核心配置正确性

如果请求头格式没问题,接下来检查JWT的关键配置:

  • 打开config/jwt.php,确认'secret' => env('JWT_SECRET'),并且你的.env文件中已经正确设置了JWT_SECRET(这个密钥必须和生成token时使用的完全一致,否则会导致签名验证失败)。
  • 检查token过期时间'ttl' => env('JWT_TTL', 60),默认是60分钟,你刚获取的token应该还在有效期内,但如果自定义过短也可能导致提前过期。

3. 确认Dingo API的认证驱动配置

Dingo需要明确指定使用JWT作为认证驱动,否则会无法识别JWT格式的token:
打开config/api.php,确保存在以下配置:

'auth' => [
    'default' => 'jwt',
    'providers' => [
        'jwt' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
    ],
],

同时,确认config/auth.php中的users提供者指向正确的用户模型:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
],

4. 排查token完整性问题

有时候复制token时会不小心带入多余的空格、换行符,导致token无效:

  • 直接从Postman的返回结果中复制完整的token字符串,避免手动输入或二次复制时出错。
  • 可以用JWT解码工具验证token是否有效,查看exp(过期时间)是否大于当前时间,sub是否为正确的用户ID。

5. 检查中间件加载顺序

确保Dingo的请求中间件已经正确加载到Laravel的api中间件组中:
打开app/Http/Kernel.php,确认$middlewareGroups的api组包含:

'api' => [
    'throttle:60,1',
    'bindings',
    \Dingo\Api\Http\Middleware\Request::class,
],

这个中间件负责解析请求头中的Authorization信息,缺失的话会导致Dingo无法识别token。

如果以上步骤都检查完毕还是有问题,可以尝试清除配置缓存:

php artisan config:clear

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:48:23