我部分理解了 Django Ldap 身份验证。谁能给出开发使用Django Authentication Ldap的非常基本的应用程序的完整示例。
我浏览了这个资源并试图理解很多东西,但我仍然无法理解如何在实现中使用它。如何创建将与 LdapBackend 类一起使用的用户模型,以及如何在 authenticate() 方法等中编写许多东西。
我部分理解了 Django Ldap 身份验证。谁能给出开发使用Django Authentication Ldap的非常基本的应用程序的完整示例。
我浏览了这个资源并试图理解很多东西,但我仍然无法理解如何在实现中使用它。如何创建将与 LdapBackend 类一起使用的用户模型,以及如何在 authenticate() 方法等中编写许多东西。
在这里,您可以看到一个完整的示例,非常有指导性地展示了如何创建自定义LDAPBackend
.
您需要在settings.py
(如您发布的链接中所示)中配置您的 LDAP 设置并将您的添加LDAPBackend
到AUTHENTICATION_BACKENDS
. 您可以使用提供的默认 LDAPBackend 或创建自定义的并使用它。
LDAPBackend
使用提供的默认值django-auth-ldap
:
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend',
'django.contrib.auth.backends.ModelBackend',
)
LDAPBackend
如果您需要向身份验证添加额外的逻辑,请使用自定义:
AUTHENTICATION_BACKENDS = (
'accounts.backends.MyLDAPBackend',
'django.contrib.auth.backends.ModelBackend',
)
然后在accounts/backends.py
:
from django_auth_ldap.backend import LDAPBackend
class MyLDAPBackend(LDAPBackend):
""" A custom LDAP authentication backend """
def authenticate(self, username, password):
""" Overrides LDAPBackend.authenticate to add custom logic """
user = LDAPBackend().authenticate(self, username, password)
""" Add custom logic here """
return user
查看上面链接的示例以获取更多详细信息。
如果您是 LDAP 新手,我建议您在有关此主题的另一个问题中查看这个答案(以及另一个答案)。
感谢@wolf2600 指出现在而不是authenticate
您需要覆盖authenticate_ldap_user
。
注意:django_auth_ldap 的语法已经改变。而不是覆盖authenticate
,你需要覆盖authenticate_ldap_user
https://django-auth-ldap.readthedocs.io/en/latest/custombehavior.html
def authenticate_ldap_user(self, username, password):
""" Overrides LDAPBackend.authenticate to save user password in django """
user = LDAPBackend.authenticate_ldap_user(self, username, password)
# If user has successfully logged in, save password in django database
if user:
user.set_password(password)
user.save()
return user
我一直在踢自己几个小时(咳嗽天咳嗽),想知道为什么authenticate
直到我发现 readthedocs.io 页面才调用我的自定义。