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
相关产品推荐
相关产品推荐

