You need to enable JavaScript to run this app. Django REST Framework配置Token认证后仍提示未提供认证凭证
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework配置Token认证后仍提示未提供认证凭证

Token认证返回"Authentication credentials were not provided"排查清单
  • 请求头格式不符合要求(最高发原因)
    DRF内置的TokenAuthentication对认证头格式有严格校验,不符合规则的请求会直接被判定为未携带凭证:
    • 固定请求头键名为Authorization,值的格式必须是Token <具体Token字符串>,也就是前缀Token和后面的Token内容之间必须有一个半角空格,正确示例:Authorization: Token 401f7ac0459ea43195a498bd3eeb21c2331d29db
    • 常见错误:把JWT的Bearer格式套用到Token认证流程、漏写Token前缀、前缀和Token值之间漏加空格、把前缀Token错写为全小写token、测试工具里错把请求头键名写成authentication。
  • 视图代码存在语法疏漏
    你贴出的测试视图中,permission_classes = (IsAuthenticated)行存在Python语法问题:单元素元组必须在元素后加末尾逗号,否则这行代码实际赋值的是IsAuthenticated类本身,而非包含该类的元组,不符合DRF对权限类配置的可迭代要求。正确写法为permission_classes = (IsAuthenticated,)。这个问题本身会触发权限类迭代错误,虽然和当前遇到的报错不直接相关,但需要修正避免后续流程出错。
  • 全局认证配置未实际生效
    • 确认已经执行过数据库迁移命令,为rest_framework.authtoken创建对应的auth_token表,未完成迁移的话哪怕Token生成命令执行成功,数据库也没有对应的Token记录,会导致认证校验失败。
    • 检查项目多环境配置、应用级settings覆盖逻辑,确认你编写的REST_FRAMEWORK全局配置没有被后续配置项覆盖为空列表,导致DRF没有加载Token认证的解析逻辑。
  • Token关联关系不匹配
    执行python manage.py drf_create_token test1生成Token时,必须确认命令中的test1和系统内实际存在的用户名完全匹配(注意大小写、特殊字符差异)。生成Token后可以通过Shell命令核验:
    # 执行python manage.py shell后运行以下代码
    from rest_framework.authtoken.models import Token
    # 打印所有已生成Token及关联用户
    for token in Token.objects.all():
        print(f"Token值:{token.key}, 关联用户:{token.user.username}")
    
    如果查询不到对应Token,或者关联用户和预期不符,说明Token生成环节就存在问题。
  • 网络层拦截了认证头
    如果服务部署在Nginx、API网关等反向代理后方,需要确认代理配置没有过滤Authorization请求头,未做对应头信息转发的话,后端服务根本接收不到前端传递的认证字段,会持续判定为未提供认证凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 08:27:10