Выйти с помощью django и django_openid_auth
Я успешно запустил django_openid_auth в моем проекте django и теперь могу войти в систему с моей учетной записью Google. Что я не могу понять, это как выйти из системы. Стандарт django.contrib.auth.views.logout
view выйдет из системы, но впоследствии посетив страницу, требующую аутентификации, снова аутентифицирует пользователя без запроса. Как я могу полностью выйти из системы?
1 ответ
Одной из целей OpenId является упрощение процесса входа в систему. Поведение, которое вы испытываете, абсолютно правильно. При первом входе в приложение с использованием учетной записи Google вы разрешили провайдеру OpenId (Google) отправлять данные в ваше приложение. Поскольку данные все еще находятся в базе данных, вам не нужно снова запрашивать разрешение на доступ.
Тем не менее, если вы хотите получить запрос снова, вам следует удалить данные из базы данных вручную. Вы можете сделать это, создав пользовательское представление выхода из системы или используя инфраструктуру Signal и добавив следующее:
from django.contrib.auth.signals import user_logged_out
@receiver(user_logged_out)
def clear_openid_data(sender, user,**kwargs):
# wipe out data according to models in django_openid_auth..
to signal.py
Стоит отметить, что user_logged_out доступен начиная с Django 1.3