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

时间:2018-02-01 09:58:52

标签: django python-social-auth

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

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

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

1 个答案:

答案 0 :(得分:0)

python-social-auth中没有标准方法可以做到这一点,还有一些选择:

  • 覆盖登录页面,如果用户经过身份验证,则先将其注销,或者显示错误,无论您的项目是什么。

  • 添加pipeline功能并将其设置在顶部,如果user不是None,则会设置,您可以引发错误,退出用户等等。< / p>

  • 如果auth_allowed处有有效的用户实例,则覆盖后端并在其中扩展False方法返回self.strategy.request.user。这将停止身份验证流程,并且AuthForbidden将被提升。