Токен авторизации Django возвращает AnonymousUser
Я пытаюсь получить пользователя из запроса. Мой клиент reactjs/postman отправляет токен в заголовке следующим образом:
'Authorization' : 'Token token_string'
По какой-то причине, когда я использую self.request.user
в представлении (GET запрос), я получаю 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
Вот мой set.py MIDDLEWARE:
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, я получаю пользователя правильно.
Django присваивает 'AnonymousUser' request.user всякий раз, когда пользователь не вошел в систему, если вы вошли в админку Django, то вы вошли на сайт. Поэтому в этом случае вы получаете правильного пользователя.