Django говорит, что текущий пользователь не аутентифицирован, хотя вошел в систему
Я действительно ничего не менял и добавил View для обновления некоторых пользовательских данных. Затем я хотел протестировать свой View и Django говорит, что текущий пользователь не аутентифицирован. Я вышел и вошел в систему несколько раз, а также просмотрел запросы в Burp. На мой взгляд, все выглядит нормально, он всегда отправляет session_id, а также логин проходит без проблем. Я также получаю свой объект пользователя, возвращаемый на фронтенд при входе.
Когда я пробую функцию "редактировать" для пользователя, я не авторизован...
Вот мой логин:
@action(methods=['post'], detail=False, url_path='sign-in', url_name='sign-in')
def login_user(self, request):
email = str(request.data.get('email'))
password = str(request.data.get('password'))
if email is None or password is None:
return _ERROR_INCOMPLETE_CREDENTIALS
# User authentication...
user = authenticate_user(email=email, password=password)
if user is None:
return _ERROR_BAD_CREDENTIALS
user_profile = UserProfile.objects.get(id=user.id)
serialized_user = UserProfileSerializer([user_profile], many=True).data
print(serialized_user)
res = login(request, user)
print(res)
return Response(serialized_user, status=status.HTTP_200_OK)
Это пользовательский метод authenticate_user:
def authenticate_user(email, password):
try:
user = User.objects.get(email=email)
except User.DoesNotExist:
return None
else:
if user.check_password(password):
return user
return None
Это представление, которое не работает из-за неаутентификации:
@action(methods=['get'], detail=False, url_name='current', url_path='current')
def get_current_user(self, request):
if not request.user.is_authenticated:
return Response({"detail": "You need to be logged in for this!"}, status=status.HTTP_401_UNAUTHORIZED)
user = request.user
user_profile = UserProfile.objects.get(id=user.id)
return Response(UserProfileSerializer([user_profile], many=True).data)