使用python-social-auth实现登出
我正在尝试用Python的Django框架做社交登录,想用Twitter来登录。
我可以成功登录。
但是,当我想用django.contrib.auth.logout
来登出时,却没有登出。
请问该怎么登出呢?
谢谢。
4 个回答
4
这个回答已经过时了,因为django-social-auth现在变成了python-social-auth
你可以在这里查看更新的Stack Overflow回答这里。
想了解更多信息,可以查看文档这里。
6
你有登出页面吗?你需要一个登出页面。
举个例子:
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
9
你是想仅仅退出Django应用,还是想“忘记”Twitter的访问权限呢?通常情况下,Twitter的认证令牌会被保存下来,以便下次用户想连接Twitter时可以简化登录流程,这样用户就不需要再次“接受”访问权限了。
Django退出登录
如果你只是想从Django的认证系统中退出,使用 django.contrib.auth.views.logout
这个视图就足够了,或者你可以创建一个自定义的退出登录视图。
社交账号断开连接
要完全断开一个社交账号,你需要使用社交认证中的断开连接功能。你可以通过以下模板标签获取断开连接的链接:
{% url "socialauth_disconnect" "backend-name" %}
想了解更多信息,可以参考 http://django-social-auth.readthedocs.org/en/v0.7.22/configuration.html#linking-in-your-templates。
强制确认提示
因为你已经允许你的应用访问OAuth提供者,所以认证提供者会记住这个决定。通常有两种方法可以强制确认这个访问权限:
- 在你的认证提供者的管理控制台中撤销访问权限(例如,拒绝Twitter应用的访问)。
- 设置一个额外的OAuth参数,强制显示确认提示。我不确定Twitter是否提供这样的功能,但如果你使用的是Google OAuth2,你可以简单地在
GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS
设置中添加{'approval_prompt': 'force'}
。