簡體   English   中英

使用 python-social-auth 注銷

[英]Logout with python-social-auth

我正在涉足 Python Django Social Auth 使用 Twitter 身份驗證。

我可以登錄。

但是,當我嘗試使用django.contrib.auth.logout時,它不會注銷。

登出的方法是什么?

謝謝。

你是想嘗試從Django應用程序注銷還是想“忘記”Twitter訪問? 通常,存儲twitter身份驗證令牌以便在下次用戶想要連接到Twitter時進行簡化登錄,因此用戶不必再次“接受”訪問。

Django注銷

如果您只想從Django auth系統注銷,那么使用django.contrib.auth.views.logout視圖或創建自定義注銷視圖就足夠了。

社會認證斷開

要完全取消鏈接/斷開社交帳戶,您需要在social-auth中使用斷開連接功能。 您可以使用以下模板標記獲取斷開網址:

{% 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,則只需將{'approval_prompt': 'force'}GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS設置即可。

你有注銷視圖嗎? 您需要有一個注銷視圖。

例:

from django.contrib.auth import logout

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

這個答案已經過時,因為django-social-auth現在是python-social-auth

在此處查看較新的Stack Overflow應答。

閱讀這里的文檔

根據文檔log outdisconnect之間是有區別的。 簡而言之,

  • 斷開連接- 忘記用戶社交帳戶。
  • 注銷- 結束當前用戶 session 並刪除所有相關數據(如 cookie)。

從這個問題來看,我假設您仍然希望允許用戶將 Twitter 與該帳戶相關聯。 如果您想斷開連接,請檢查此答案

要注銷用戶,您可以在 Django settings.py 中設置

LOGOUT_URL = "logout"

然后,在你的 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文件,並在其中包含您希望注銷用戶看到的任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM