Я использую knox LoginView для входа в мой сервер. Это код представления:

class Login(LoginView):
    permission_classes = (AllowAny,)

    def post(self, request, format=None):
        serializer = AuthTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        login(request, user)
        return super(Login, self).post(request, format=None)

Когда я запускаю свой интерфейс (разработанный с помощью angular) и пытаюсь войти в систему с помощью Microsoft Edge, все работает нормально. Я получаю токен и сохраняю его в локальном. Тот же результат, если я выполню POST с помощью Postman. Но если я попытаюсь сделать то же самое с помощью Firefox, я получу 401 Unauthorized с этим JSON:

{"detail":"Invalid token."}

Почему он запрашивает токен, если это представление AllowAny? Почему это работает в Edge и Postman, но не в Firefox?

Больше данных:

Это класс аутентификации в settings.py:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'knox.auth.TokenAuthentication',
    ),
}

РЕДАКТИРОВАТЬ: На самом деле он работает с использованием Firefox Developer Edition.

0
BraveOtter 10 Фев 2021 в 19:58

1 ответ

Лучший ответ

Решил проблему с очисткой куки.

0
BraveOtter 10 Фев 2021 в 17:14