Django社交身份验证禁用管理员

时间:2018-04-03 12:22:54

标签: django python-social-auth

在python社交auth库中:

我正在为我的django项目做一个社交认证。我想为管理员禁用社交身份验证。 它默认如何工作:

  1. 访问社交身份验证网址并授予权限
  2. 为Admin
  3. 创建了新的Python Social Auth › User social auths对象
  4. 此社交帐户登录admin
  5. 我希望它如何运作:

    1. 访问社交身份验证网址并授予权限
    2. Python Social Auth › User social auths对象与新常规用户一起创建,就像管理员未登录一样
    3. 此社交帐户以常规用户身份登录
    4. 有一种优雅的方式吗?尽可能覆盖最少量的管道功能。

1 个答案:

答案 0 :(得分:0)

解决此问题的方法是直接禁止admin用户使用社交身份验证过程,因为如果用户是管理员,您需要在管道中使用自定义函数AuthForbidden

此功能应在social_user步骤之后,以确保已识别已关联的帐户。该函数的代码应该是简单的代码:

def disable_admin(backend, user=None, *args, **kwargs):
    if user and user.is_admin:
        raise AuthForbidden(backend)

有关扩展管道here的更多文档。