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
。
我正在使用 python-social-auth 来允许用户通过 SAML 登录;一切正常,除了如果登录用户打开 SAML 登录页面并以其他用户身份再次登录,他们将获得与这两个 SAML 用户的关联,而不是切换登录。
我理解这背后的目的(因为您通常可以将用户与不同的身份验证服务相关联)但在这种情况下,我需要强制执行单一关联(即,如果您使用鉴于 SAML IdP,您不能为同一用户与同一提供商添加另一个关联)。
是否有任何 python-social-auth 解决方案,或者我应该拼凑一些东西(例如,防止登录用户访问登录页面)?
在 python-social-auth
中没有标准的方法,有一些替代方法:
覆盖登录页面,如果有用户通过身份验证,则先将其注销,或显示错误,这取决于您的项目。
添加一个
pipeline
函数并将其设置在顶部,如果user
不是None
,您可以引发错误,注销用户等重写后端并扩展其中的
auth_allowed
方法 returnFalse
如果self.strategy.request.user
有一个有效的用户实例。这将停止身份验证流程并提高AuthForbidden
。