Django: перехват и принятие / отклонение попыток входа - PullRequest
0 голосов
/ 24 октября 2019

Существует ли способ перехвата попыток входа в систему с помощью Django, возможно, сигнала или перехвата, посредством которого, если определенный атрибут пользователя имеет значение True или False, либо разрешит попытку входа в систему, либо отклонит ее ...

Я бы предпочел не перестраивать заново, просто использовать существующую инфраструктуру Django ...

Возможно, создание собственного объекта Permission программно: https://docs.djangoproject.com/en/2.2/topics/auth/default/?

1 Ответ

2 голосов
/ 24 октября 2019

Есть несколько способов сделать это. Вероятно, самым простым является создание пользовательского аутентификационного бэкенда, который подклассирует встроенный ModelBackend, но переопределяет user_can_authenticate для проверки вашего пользовательского атрибута.

from django.contrib.auth.backends import ModelBackend

class MyCustomBackend(ModelBackend):
     def user_can_authenticate(self, user):
        return user.is_active and user.my_custom_attribute

Затем поместите это в верхнюю часть вашегоНастройка AUTHENTICATION_BACKENDS.

...