Django Axes
django-axes отслеживает неудачные попытки входа и блокирует подозрительную активность.
Установка
Настройка
1# settings.py
2INSTALLED_APPS = [
3 'axes',
4]
5
6MIDDLEWARE = [
7 'axes.middleware.AxesMiddleware',
8]
9
10AUTHENTICATION_BACKENDS = [
11 'axes.backends.AxesBackend',
12 'django.contrib.auth.backends.ModelBackend',
13]
14
15# Настройки Axes
16AXES_FAILURE_LIMIT = 5
17AXES_COOLOFF_TIME = 1 # час
18AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP = True
Дополнительные настройки
1# settings.py
2# Блокировка по IP
3AXES_LOCK_OUT_BY_IP = True
4
5# Блокировка по username
6AXES_LOCK_OUT_BY_USER_OR_IP = True
7
8# Время блокировки в часах
9AXES_COOLOFF_TIME = 2
10
11# Количество попыток
12AXES_FAILURE_LIMIT = 3
13
14# Исключения
15AXES_NEVER_LOCKOUT_GET = True
16AXES_NEVER_LOCKOUT_WHITELIST = True
Команды управления
Кастомизация блокировки
FAQ
Q: Как исключить IP из проверки?
A: Используй AXES_IP_WHITELIST в настройках.
Q: Можно ли настроить уведомления о блокировках?
A: Да, используй сигналы Django для отправки уведомлений.