【问题标题】:Python-social-auth: do not reassociate existing usersPython-social-auth:不要重新关联现有用户
【发布时间】:2018-02-02 23:47:45
【问题描述】:
我正在使用 python-social-auth 来允许用户通过 SAML 登录;一切正常,除了如果登录用户打开 SAML 登录页面并以其他用户身份再次登录,他们将获得与这两个 SAML 用户的关联,而不是切换登录。
我了解这背后的目的(因为您通常可以将用户与不同的身份验证服务相关联),但在这种情况下,我需要强制执行单个关联(即,如果您使用给定的 SAML 登录IdP,您不能为具有相同提供者的同一用户添加另一个关联)。
是否有任何 python-social-auth 解决方案,或者我应该拼凑一些东西(例如,阻止登录用户访问登录页面)?
【问题讨论】:
标签:
django
python-social-auth
【解决方案1】:
python-social-auth 中没有标准的方法,有几种替代方法:
覆盖登录页面,如果有用户通过身份验证,则先将其注销,或者显示错误,无论适合您的项目。
添加一个pipeline函数并将其设置在顶部,如果user不是None,您可以引发错误、注销用户等。
如果self.strategy.request.user 存在有效的用户实例,则覆盖后端并扩展其中的auth_allowed 方法返回False。这将停止身份验证流程并引发AuthForbidden。