【发布时间】:2023-03-27 04:45:01
【问题描述】:
我正在使用django-auth-ldap 连接到 LDAP 服务器进行身份验证。 django-auth-ldap 提供了AUTH_LDAP_REQUIRE_GROUP 设置,它可以用来只允许特定组中的用户访问。这很好用,但该选项只允许检查一组;我想检查用户是否被放置在一个或另一个组中。
在模块django_auth_ldap/backend.py 中,我可以修改LDAPUser(object) 类的方法_check_required_groups 来实现此行为。直接修改它可以正常工作,但由于更改源将导致维护地狱,我正在寻找一种解决方案来更改此方法而不接触源。我有两个想法:
1) 猴子补丁
更改LDAPUser 类实例的_check_required_groups 方法。问题是我不知道它在哪里实例化。我只是在设置文件中使用从django_auth_ldap.config 导入的LDAPSearch 和GroupOfNamesType,并将字符串django_auth_ldap.backend.LDAPBackend 传递给AUTHENTICATION_BACKENDS 元组。
2) 扩展模块
创建一个自己的模块,扩展原来的django_auth_ldap 并使用它而不是原来的。我尝试创建一个新目录,添加 __init__.py 行:
from django_auth_ldap import *
但是使用这个模块不起作用,因为它不能导入custom_auth.config。
任何其他建议或提示如何使其中一种尝试起作用?
【问题讨论】:
标签: python django monkeypatching extending