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

Django REST Framework TokenAuthentication在Postman可用但浏览器可浏览API认证失败

DRF可浏览API使用TokenAuthentication的解决方案

可以在DRF新版本(3.x及以后)的可浏览API中使用TokenAuthentication,你的问题大概率是配置不完整或token传递方式不符合要求,以下是排查和解决步骤:

1. 确认核心配置完整性

  • 确保INSTALLED_APPS中包含rest_framework.authtoken,并执行过python manage.py migrate生成token存储表:
    # settings.py
    INSTALLED_APPS = [
        # 其他应用
        'rest_framework',
        'rest_framework.authtoken',
    ]
    
  • 确认DEFAULT_AUTHENTICATION_CLASSES已正确配置:
    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': [
            'rest_framework.authentication.TokenAuthentication',
            # 可选:添加SessionAuthentication,可通过页面"Login"按钮登录调试,无需手动传token
            'rest_framework.authentication.SessionAuthentication',
        ],
        # 若接口需要登录权限,配置对应权限类
        'DEFAULT_PERMISSION_CLASSES': [
            'rest_framework.permissions.IsAuthenticated',
        ]
    }
    

2. 可浏览API中正确传递Token的方式

  • 请求头方式:必须严格遵循格式 Authorization: Token <你的token字符串>,注意Token与token值之间有空格,这是最容易出错的点。
  • 查询参数方式:在URL后拼接 ?token=<你的token字符串>,DRF的TokenAuthentication默认会识别该参数。
  • 若同时配置了SessionAuthentication,点击可浏览API页面顶部的"Login"按钮,用用户账号密码登录后,会话会自动保持认证状态,无需手动传token。

3. 排查验证步骤

  • 打开浏览器开发者工具(F12),查看请求的Network面板,确认Authorization请求头是否正确发送,未被插件或中间件拦截。
  • 查看DRF的请求日志,检查认证环节是否识别到token、是否验证通过。
  • 通过Django Shell验证用户token有效性:
    python manage.py shell
    from rest_framework.authtoken.models import Token
    # 替换为你的用户名
    token = Token.objects.get(user__username='your_username')
    print(token.key)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:52:52