【问题标题】:Python Social Auth NotAllowedToDisconnect at /disconnect/facebook/1/Python Social Auth NotAllowedToDisconnect at /disconnect/facebook/1/
【发布时间】:2014-01-02 14:32:23
【问题描述】:

我正在尝试在 Django 应用程序中使用 Python Social Auth 注销,但我得到了

NotAllowedToDisconnect at /disconnect/facebook/1/

这些是我的设置:

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'social.pipeline.mail.mail_validation',
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details'
)



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

这是我在模板上使用的代码

{{ assoc.provider }} (<a href="{% url 'social:disconnect_individual' assoc.provider assoc.id %}" class="disconnect">Disconnect </a>)

【问题讨论】:

  • 您确定当用户退出他的一个帐户时,您要断开他所有的社交帐户吗?

标签: python django facebook


【解决方案1】:

提供单独的注销操作,将注销和断开连接分开。

from django.contrib.auth import logout as auth_logout

def logout(request):
    """Logs out user"""
    auth_logout(request)
    return render_to_response('home.html', {}, RequestContext(request))

有关完整示例,请参阅Django example app

在您的断开连接管道中,您有social.pipeline.disconnect.allowed_to_disconnect。这将在当前登录方式断开后验证用户是否有有效的登录方式。这是allowed_to_disconnect处理的。

为了允许用户断开连接并避免NotAllowedToDisconnect,请从您的SOCIAL_AUTH_DISCONNECT_PIPELINE 中删除social.pipeline.disconnect.allowed_to_disconnect

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 2015-12-28
  • 1970-01-01
相关资源
最近更新 更多