docker Django授权令牌返回AnonymousUser

0wi1tuuw  于 2022-12-03  发布在  Docker
关注(0)|答案(1)|浏览(132)

我尝试从一个请求中获取用户。我的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后使用浏览器调用请求时,我可以正确地获取用户。

oyxsuwqo

oyxsuwqo1#

Django会为request.user分配'AnonymousUser',只要用户没有登录,如果你登录了Django admin,你就已经登录到了站点。所以这就是为什么你在那个示例中得到了正确的用户。

相关问题