Python-social-auth:不重新关联现有用户

Python-social-auth: do not reassociate existing users

我正在使用 python-social-auth 来允许用户通过 SAML 登录;一切正常,除了如果登录用户打开 SAML 登录页面并以其他用户身份再次登录,他们将获得与这两个 SAML 用户的关联,而不是切换登录。

我理解这背后的目的(因为您通常可以将用户与不同的身份验证服务相关联)但在这种情况下,我需要强制执行单一关联(即,如果您使用鉴于 SAML IdP,您不能为同一用户与同一提供商添加另一个关联)。

是否有任何 python-social-auth 解决方案,或者我应该拼凑一些东西(例如,防止登录用户访问登录页面)?

python-social-auth 中没有标准的方法,有一些替代方法:

  • 覆盖登录页面,如果有用户通过身份验证,则先将其注销,或显示错误,这取决于您的项目。

  • 添加一个pipeline函数并将其设置在顶部,如果user不是None,您可以引发错误,注销用户等

  • 重写后端并扩展其中的 auth_allowed 方法 return False 如果 self.strategy.request.user 有一个有效的用户实例。这将停止身份验证流程并提高 AuthForbidden