使用django和django_openid_auth注销

时间:2011-03-03 10:04:30

标签: django openid django-openid-auth

我成功让django_openid_auth在我的django项目中工作,现在可以使用我的Google帐户登录。我无法弄清楚的是如何退出。标准django.contrib.auth.views.logout视图将注销用户,但随后访问需要身份验证的页面将在没有提示的情况下再次对用户进行身份验证。如何完全注销用户?

1 个答案:

答案 0 :(得分:1)

OpenId的目的之一是简化登录过程。 您遇到的行为绝对正确。首次使用Google帐户登录应用程序时,您允许OpenId提供商(Google)将数据发送到您的应用程序。 由于数据仍在数据库中,因此无需再次提示您进行访问。

然而,如果您想再次提示,则应手动清除数据库中的数据。您可以通过创建自定义注销视图或使用信号基础结构并添加以下内容来执行此操作:

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..

到signals.py

值得一提的是,自Django 1.3以来 user_logged_out 可用