проблема выхода из системы django-oauth-toolkit, когда пользователь не запрашивает имя пользователя/пароль каждый раз

Я не могу найти никакой информации об этой проблеме нигде в Интернете, поэтому я собираюсь разместить ее здесь!

Я использую внешнее приложение, которое перенаправляет на пользовательский auth_views.LoginView на бэкэнде (django-oauth-toolkit) с client_id и т. д. У меня все это работает. (Я использую неявный грант, кстати).

Проблема в том, что когда пользователь выходит из системы, я использую /o/revoke_token, который успешно удаляет токен из базы данных. Однако, когда пользователь повернется и снова войдет в систему, он никогда больше не запрашивает имя пользователя/пароль. auth_views.LoginView выдаст 302 и перенаправит обратно на интерфейс с действительным api_key.

Как я могу предотвратить это? Я хочу предлагать пользователю КАЖДЫЙ РАЗ, когда он попадает на эту страницу, для своего имени пользователя/пароля. Таким образом, они могут выйти из системы и снова войти в систему с другим пользователем, если это необходимо.


person Josh Newlin    schedule 05.03.2019    source источник


Ответы (2)


У меня была такая же проблема, и, если я не ошибаюсь, это потому, что вам тоже нужно выйти из системы.

На данный момент ваш пользователь все еще вошел в систему, поэтому клиент запросит новый токен, ваш сервер авторизации проверит, правильно ли пользователь вошел в систему, обнаружит, что да, и просто предоставит новый токен вместо перенаправления.

person ZaX    schedule 25.04.2019
comment
Да, мне пришлось пойти дальше и перенаправить пользователя на конечную точку выхода, чтобы завершить сеанс браузера. Это сделало это! Спасибо - person Josh Newlin; 26.04.2019

РЕДАКТИРОВАТЬ: это не очень хорошее решение. Посмотрите на другой ответ, предоставленный ZaX.

Чтобы продолжить это, я исправил это, просто установив SESSION_COOKIE_AGE на небольшое число, 3, чтобы разрешить вход в систему, но не поддерживать сеанс пользователей. Это заставит их повторно ввести свое имя пользователя/пароль, но нет необходимости иметь сеанс для запроса от серверной части, если у вас есть токен доступа.

person Josh Newlin    schedule 07.03.2019