使用python-social-auth注销

时间:2016-10-19 07:32:18

标签: python django authentication python-social-auth django-socialauth

我正在使用python-social-auth进行第三方登录和注销。用Facebook,Twitter和Google Plus登录最初是成功的(它会询问我的用户名/电子邮件和密码)。我的问题是当我退出然后再通过其中任何一个登录时,我将自动登录,甚至不再询问我的用户名/电子邮件和密码。我没有退出吗?

这是我的disconnect pipeline

SOCIAL_AUTH_DISCONNECT_PIPELINE = (
    'social.pipeline.disconnect.allowed_to_disconnect',
    'social.pipeline.disconnect.get_entries',
    'social.pipeline.disconnect.revoke_tokens',
    'social.pipeline.disconnect.disconnect',
)

这是我的退出视图:

from django.contrib.auth import logout as auth_logout

def logout(request):
    auth_logout(request)
    return render_to_response('logged-out.html', {}, RequestContext(request))

1 个答案:

答案 0 :(得分:1)

所以我在我的网站上对此进行了测试。以下是解释注销和断开连接行为的链接: http://python-social-auth.readthedocs.io/en/latest/logging_out.html 如您所见,您需要断开与社交应用的连接,您需要使用断开连接(断开连接是您的用户可以要求您的项目“忘记我的帐户”的方式。)。您正在删除数据库中 social_auth_usersocialauth 表中的用户关联。要做到这一点,你需要做的是:

**settings.py:**
SOCIAL_AUTH_DISCONNECT_PIPELINE = (
# Verifies that the social association can be disconnected from the current
# user (ensure that the user login mechanism is not compromised by this
# disconnection).
#'social.pipeline.disconnect.allowed_to_disconnect',

# Collects the social associations to disconnect.
'social.pipeline.disconnect.get_entries',

# Revoke any access_token when possible.
'social.pipeline.disconnect.revoke_tokens',

# Removes the social associations.
'social.pipeline.disconnect.disconnect',
)
模板中的

<form id="myform" method="post" action="{% url 'social:disconnect' 'google-oauth2' %}5/?next={{request.path }}">
    {% csrf_token %}
    <input type="hidden" name="name" value="value" /> 
    <a onclick="document.getElementById('myform').submit();">discon</a>
</form>

在第一行中,google-oatuh2之后的数字5表示数据库表中的用户ID。因此下面图片中的第一个用户将从我的应用中删除/断开连接。 要检查断开连接功能是否有效,请参阅 social_auth_usersocialauth 表,了解是否已删除用户关联。 enter image description here 但问题是,每当你通过谷歌,Facebook连接到你自己的应用程序,这意味着你也登录到谷歌或Facebook网站。(在首次登录时,它打开Facebook或谷歌的登录页面)。即使您从自己的应用程序断开连接,您也需要从Facebook或谷歌网站注销。否则,您的浏览器会让您保持登录状态,当您再次尝试连接到您的网络应用时,您将自动登录。