выйти с помощью django и django_openid_auth - PullRequest
2 голосов
/ 03 марта 2011

Я успешно запустил django_openid_auth в моем проекте django и теперь могу войти в систему с моей учетной записью Google.Что я не могу понять, это как выйти из системы.В стандартном представлении django.contrib.auth.views.logout пользователь выйдет из системы, но при последующем посещении страницы, требующей аутентификации, пользователь снова будет аутентифицироваться без запроса.Как я могу полностью выйти из системы?

1 Ответ

1 голос
/ 15 мая 2011

Одной из целей 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

...