django 使用python-social-auth注销

cyvaqqii  于 2023-01-03  发布在  Go
关注(0)|答案(4)|浏览(148)

我稍微涉猎了一下使用Twitter身份验证的Python Django Social Auth。
我可以登录。
但是,当我尝试使用django.contrib.auth.logout注销时,它没有注销。
注销的方法是什么?
谢谢。

de90aj5v

de90aj5v1#

您是想直接从Django应用程序中注销,还是想"忘记" Twitter访问权限?通常twitter auth令牌会被存储起来,以便用户下次想要连接到twitter时简化登录,这样用户就不必再次"接受"访问权限。

Django退出

如果你只想从Django auth系统中注销,使用django.contrib.auth.views.logout视图或者创建一个自定义的注销视图就足够了。

社交身份验证断开连接

要完全取消链接/断开连接社交账户,您需要使用social-auth中的断开连接函数。您可以使用以下模板标签获取断开连接的网址:

{% url "socialauth_disconnect" "backend-name" %}

For more information, please refer to http://django-social-auth.readthedocs.org/en/v0.7.22/configuration.html#linking-in-your-templates.

强制批准提示

由于您已允许应用访问OAuth提供程序,因此验证提供程序将记住该决定。通常有两种方法可强制确认该访问权限:

  • 在您的身份验证提供程序的管理控制台中撤销访问权限(例如,不批准twitter应用程序访问)。
  • 设置一个额外的OAuth参数来强制批准提示,我不确定Twitter是否提供了这样的功能,但如果你使用的是Google OAuth2,你可以简单地将{'approval_prompt': 'force'}添加到GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS设置中。
kiayqfof

kiayqfof2#

您有注销视图吗?您需要有注销视图。

    • 示例:**
from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.
ou6hu8tu

ou6hu8tu3#

此答案已过时,因为django-social-auth现在是python-social-auth
请参阅较新的堆栈溢出解答here
阅读文档here

wi3ka0sx

wi3ka0sx4#

根据documentation注销断开连接是有区别的。简而言之,

*断开连接-忘记用户社交帐户。
*注销-结束当前用户会话并删除任何相关数据(如Cookie)。

从这个问题来看,我假设您仍然希望允许用户将Twitter与帐户关联,如果您希望断开连接,请check this answer
要注销用户,您可以在Django中添加settings.py

LOGOUT_URL = "logout"

然后,在您的www.example.com中urls.py

from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
    path("logout/", auth_views.LogoutView.as_view(template_name="registration/logged_out.html"), name="logout"),
]

然后,要注销用户,您可以在模板中使用类似于

<a href="{% url 'logout' %}">Logout</a>

此外,您还必须在appname/templates/registration/中创建一个logged_out.html文件,并在其中包含您希望注销用户看到的任何内容。

相关问题