【发布时间】:2011-03-03 10:04:30
【问题描述】:
我成功让 django_openid_auth 在我的 django 项目中工作,现在可以使用我的 Google 帐户登录。我不知道如何注销。标准的django.contrib.auth.views.logout 视图将注销用户,但随后访问需要身份验证的页面将在没有提示的情况下再次对用户进行身份验证。如何彻底注销用户?
【问题讨论】:
标签: django openid django-openid-auth
我成功让 django_openid_auth 在我的 django 项目中工作,现在可以使用我的 Google 帐户登录。我不知道如何注销。标准的django.contrib.auth.views.logout 视图将注销用户,但随后访问需要身份验证的页面将在没有提示的情况下再次对用户进行身份验证。如何彻底注销用户?
【问题讨论】:
标签: django openid django-openid-auth
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..
到signals.py
值得一提的是 user_logged_out 从 Django 1.3 开始就可用
【讨论】: