【发布时间】:2014-11-25 07:03:41
【问题描述】:
我一直在开发一个针对 LDAP 进行身份验证的 Django 应用程序。我在管理界面中创建了权限和组。在开发模式下,我的两个后端都处于活动状态
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend',
'django.contrib.auth.backends.ModelBackend',
)
Django 尝试在其所有身份验证后端进行身份验证。无论在哪里成功,它都会使用授予用户的 ModelBackend 授权(权限和组)。
但是当禁用 'django.contrib.auth.backends.ModelBackend' 时,Django 不使用标准的授权方法。在生产环境中,我希望用户仅针对 LDAP 进行身份验证。
我的问题:
是否有禁用 ModelBackend 授权但仍使用 ModelBackend 授权的选项。
编辑
docs of django-auth-ldap 中的第一个注释:
注意 LDAPBackend 不继承自 ModelBackend。可以通过将 LDAPBackend 配置为从 LDAP 服务器中提取组成员身份来独占使用 LDAPBackend。但是,如果您想在 Django 中为单个用户分配权限或将用户添加到组中,则需要安装两个后端:
但我仍然感到困惑。这没有技术原因。当两个后端都激活并针对 LDAP 进行身份验证时,Django 仍然能够使用 Django 权限。
【问题讨论】: