Аутентификация Django Ldap Полный пример

Я частично понял аутентификацию Django Ldap. Может кто-нибудь привести полный пример разработки очень простого приложения, использующего Django Authentication Ldap.

Я пролистал этот ресурс и попытался понять многие вещи, но до сих пор не могу понять, как использовать его в реализации. Как создать пользовательскую модель, которая будет использоваться вместе с классом LdapBackend, и как написать много вещей в методе authenticate() и т. Д.

2 ответа

Здесь вы можете увидеть полный пример очень хорошо руководствуясь, показывая, как создать пользовательский LDAPBackend,

Вам необходимо настроить параметры LDAP в settings.py (как показано в ссылке, которую вы разместили) и добавьте свой 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, я бы порекомендовал взглянуть на этот ответ (и другой тоже) в другом вопросе по этой теме.

Примечание: синтаксис django_auth_ldap изменился. Вместо переопределения вам нужно переопределить 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.

Другие вопросы по тегам