使用python-social-auth实现登出

9 投票
4 回答
12442 浏览
提问于 2025-04-17 13:41

我正在尝试用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'}

撰写回答