我正在使用python-social-auth来允许用户通过SAML登录;一切正常,除了如果登录用户打开SAML登录页面并再次以其他用户身份登录这一事实,他们将获得与两个SAML用户的关联,而不是切换登录。
我理解这背后的目的(因为它通常可以将用户与不同的auth服务相关联)但在这种情况下我需要强制执行单个关联(即,如果您使用给定的SAML登录) IdP,您不能为具有相同提供商的同一用户添加另一个关联。)
是否有任何python-social-auth解决方案,或者我应该拼凑一些东西(例如,阻止登录用户访问登录页面)?
答案 0 :(得分:0)
在python-social-auth
中没有标准方法可以做到这一点,还有一些选择:
覆盖登录页面,如果用户经过身份验证,则先将其注销,或者显示错误,无论您的项目是什么。
添加pipeline
功能并将其设置在顶部,如果user
不是None
,则会设置,您可以引发错误,退出用户等等。< / p>
如果auth_allowed
处有有效的用户实例,则覆盖后端并在其中扩展False
方法返回self.strategy.request.user
。这将停止身份验证流程,并且AuthForbidden
将被提升。