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

Django中Authorization Token请求返回AnonymousUser问题求助

解决DRF中Token认证后request.user为AnonymousUser的问题

1. 配置DRF全局认证类

在settings.py中添加REST Framework的全局配置,启用Token认证:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        # 保留Session认证可兼容admin登录场景
        'rest_framework.authentication.SessionAuthentication',
    ]
}

2. 确保视图继承DRF的APIView

你的视图必须继承自DRF提供的视图类(如APIView、GenericAPIView或ViewSet),而非Django原生的View。只有DRF视图会自动处理配置的认证逻辑,将Token对应的用户赋值给request.user。

示例视图写法:

from rest_framework.views import APIView
from rest_framework.response import Response

class YourTargetView(APIView):
    def get(self, request):
        # 此时request.user应能正确获取到认证用户
        return Response({'username': request.user.username})

3. 检查请求头格式

确认请求头的格式完全正确:Authorization: Token <你的token字符串>,注意Token与token值之间有空格,且Authorization首字母需大写,避免拼写或格式错误导致认证失败。

4. 可选:确认自定义用户模型配置

如果项目使用了自定义用户模型,需在settings.py中明确指定:

AUTH_USER_MODEL = '你的应用名.User'

注:该配置需在项目初始化阶段设置,后续修改可能需要调整数据库迁移。

内容的提问来源于stack exchange,提问作者Daniel Ben Zaken

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:25:41