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

DRF使用Simple JWT时访问受限URL提示「未提供身份验证凭据」问题

搞定Simple JWT「Authentication credentials were not provided」错误

嘿,我来帮你排查这个头疼的认证问题!你已经配置了JWT认证和登录权限,但请求还是提示未提供凭据,大概率是令牌的传递方式不对,或者令牌本身有问题,下面一步步来解决:

最常见的问题:令牌传递格式错了

Simple JWT默认要求令牌必须放在Authorization请求头里,格式是严格的:Bearer <你的access令牌>,注意Bearer后面一定要加个空格!

  • Postman操作示例:
    切换到「Headers」标签,添加一个键为Authorization的头,值填Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...(把后面的字符串换成你实际拿到的access token)
  • Curl命令示例:
    curl -H "Authorization: Bearer 你的_access_token" http://你的API域名/currency/目标slug/
    

先确认你的令牌是有效的

别着急发请求,先确保手里的令牌是活的:

  1. 先通过Simple JWT自带的token_obtain_pair接口拿新令牌:
    curl -X POST http://你的API域名/api/token/ -d "username=你的用户名&password=你的密码"
    
    返回结果里的access字段才是你要用来发请求的令牌,refresh是用来刷新令牌的,不能直接用在请求头里!
  2. 可以用token_verify接口验证令牌是否有效:
    curl -X POST http://你的API域名/api/token/verify/ -d "token=你的_access_token"
    
    如果返回200,说明令牌没问题;如果报错,那就是令牌过期或者无效,重新拿一个就行。

检查你的配置有没有遗漏

你的views.py和settings.py代码看起来是对的,但可以再确认这几点:

  • 有没有装对包:pip install djangorestframework-simplejwt,别漏了!
  • INSTALLED_APPS里有没有加rest_framework和rest_framework_simplejwt?虽然认证类配置了,但有时候没加app会有隐性问题
  • 视图的permission_classes是不是真的设成了[IsAuthenticated]?你贴的代码是对的,但可以再检查下拼写有没有错

特殊情况:用Cookie存令牌的话要处理CSRF

如果你配置了JWT_AUTH_COOKIE把令牌存在Cookie里,那Postman请求时还得带CSRF令牌,但API请求一般用Authorization头的方式更省心,建议优先用Header传递令牌。

快速测试流程

  1. 用token_obtain_pair拿一个全新的access token
  2. 在Postman里严格按照Bearer <token>格式加Authorization头
  3. 发请求到你的CurrencyDetailAPIView接口

如果还是不行,可以看看DRF的日志,里面会有更详细的错误信息——比如是令牌解析失败,还是请求头根本没被识别到。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:17:37