Блокировка топоров Django не работает так, как ожидалось
Я использую Django Axes для блокировки пользователей после определенного количества неудачных попыток входа. Однако, несмотря на мои настройки, пользователи все равно могут войти в систему сразу после блокировки, если они ввели правильные учетные данные. Я хочу сделать так, чтобы пользователи блокировались на 1 час, независимо от того, вводили ли они правильные учетные данные в течение этого периода.
Вот мои текущие настройки в settings.py
:
from datetime import timedelta
AXES_FAILURE_LIMIT = 3
AXES_LOCK_OUT_AT_FAILURE = True
AXES_COOLOFF_TIME = timedelta(hours=1) # Set cool-off time to 1 hour
AXES_LOCKOUT_CALLABLE = "customer_manager.views.lockout"
AXES_RESET_ON_SUCCESS = False
AXES_ENABLE_ACCESS_FAILURE_LOG = True
AXES_RESET_COOL_OFF_ON_FAILURE_DURING_LOCKOUT = False
AXES_SENSITIVE_PARAMETERS = []
AXES_LOCKOUT_PARAMETERS = ["username"]
AXES_CACHE = 'default'
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
Я проверил следующее:
axes.middleware.AxesMiddleware
включен в настройки MIDDLEWARE, расположенные после AuthenticationMiddleware
.
Я запустил python manage.py migrate
и подтвердил, что нет никаких незавершенных миграций.
Я временно удалил вызываемую пользовательскую блокировку, чтобы протестировать с настройками по умолчанию.
Несмотря на эти конфигурации, пользователи все еще могут войти в систему сразу после блокировки, если они введут правильные учетные данные. Вот некоторые соответствующие записи в журнале:
AXES: User login failed, running database handler for failure.
AXES: Cleaned up 0 expired access attempts from database that were older than 2024-08-07 09:24:53.250394+00:00
Using parameter credentials to get username with key settings.AXES_USERNAME_FORM_FIELD
AXES: Repeated login failure by {username: "daniyal", ip_address: "127.0.0.1", user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0", path_info: "/options/admin/login/"}. Updated existing record in the database.
Using parameter credentials to get username with key settings.AXES_USERNAME_FORM_FIELD
AXES: Getting access attempts that are newer than 2024-08-07 09:24:53.250394+00:00
AXES: Locking out {username: "daniyal", ip_address: "127.0.0.1", user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0", path_info: "/options/admin/login/"} after repeated login failures.
rest_framework.exceptions.AuthenticationFailed: Invalid credentials, try again
Что я упускаю или делаю неправильно? Любая помощь будет очень признательна!