我尝试从一个请求中获取用户。我的reactjs/postman客户端在头中发送令牌,如下所示:
'Authorization' : 'Token token_string'
由于某种原因,当我在视图(GET请求)中使用self.request.user
时,我得到了AnonymousUser。
令牌有效,使用下面的代码我得到的是正确的用户,而不是AnonymousUser:
from rest_framework.authtoken.models import Token
from django.shortcuts import get_object_or_404
user = get_object_or_404(Token, pk=token_string).user
下面是我的setting.py中间件:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
下面是我的用户模型:
class User(django.contrib.auth.models.User):
avatar = models.URLField(max_length=255, blank=True)
date = models.DateTimeField(auto_now_add=True)
name = models.CharField(max_length=256)
注意:当我在登录Django admin后使用浏览器调用请求时,我可以正确地获取用户。
1条答案
按热度按时间oyxsuwqo1#
Django会为request.user分配'AnonymousUser',只要用户没有登录,如果你登录了Django admin,你就已经登录到了站点。所以这就是为什么你在那个示例中得到了正确的用户。