Django-axes Ошибки: Объект 'Settings' не имеет атрибута ...
Я столкнулся с большим количеством ошибок атрибутов при использовании django-axes. Всякий раз, когда я исправляю одну из них, устанавливая атрибуты по умолчанию, начинают появляться новые. Я следовал документации по установке. Вот мой код...
settings.py
Внизу я попытался установить некоторые атрибуты по умолчанию, которые вызывали ошибки. В настоящее время приведенный выше код приводит к ошибке 'Settings' object has no attribute 'AXES_HANDLER'
.
В views.py при аутентификации пользователя я установил request=request
, как сказано в документации. Я также добавил функцию блокировки:
def lockout(request, credentials, *args, **kwargs):
messages.error(request, "Account locked. Try again in 6 minutes")
return redirect('index')
Примечание: Я также использую пользовательскую модель пользователя, чтобы пользователи могли войти в систему, используя свой email. Я тестировал это на другом проекте с django-axes и все работало хорошо. Поэтому я не думаю, что проблема в этом.
Вопрос: Как мне это исправить? Есть ли что-то, что мне нужно установить или настроить по-другому?
Добавьте переменную в ваш settings.py
файл:
AXES_HANDLER = 'axes.handlers.database.AxesDatabaseHandler'
Я исправил это, добавив практически все возможные варианты:
AXES_ENABLED = True
AXES_FAILURE_LIMIT = 3
AXES_LOCK_OUT_AT_FAILURE = True
AXES_COOLOFF_TIME = 0.1 # in hours - now set to 6 mins
AXES_LOCKOUT_CALLABLE = "Chat.views.lockout"
AXES_PROXY_ORDER = "left-most"
AXES_PROXY_COUNT = None
AXES_PROXY_TRUSTED_IPS = None
AXES_ONLY_WHITELIST = False
AXES_ONLY_ADMIN_SITE = False
AXES_ONLY_USER_FAILURES = False
AXES_ENABLE_ADMIN= True
AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP= False
AXES_LOCK_OUT_BY_USER_OR_IP= False
AXES_USE_USER_AGENT= False
AXES_CACHE='axes'
AXES_LOCKOUT_TEMPLATE=None
AXES_LOCKOUT_URL=None
AXES_VERBOSE=True
AXES_USERNAME_FORM_FIELD='username'
AXES_USERNAME_CALLABLE=None
AXES_WHITELIST_CALLABLE=None
AXES_PASSWORD_FORM_FIELD='password'
AXES_SENSITIVE_PARAMETERS=[]
AXES_NEVER_LOCKOUT_GET=False
AXES_NEVER_LOCKOUT_WHITELIST=False
AXES_IP_BLACKLIST=None
AXES_IP_WHITELIST=None
AXES_DISABLE_ACCESS_LOG=False
AXES_ENABLE_ACCESS_FAILURE_LOG=True
AXES_ACCESS_FAILURE_LOG_PER_USER_LIMIT=1000
AXES_RESET_ON_SUCCESS=False
AXES_ALLOWED_CORS_ORIGINS='*'
AXES_HTTP_RESPONSE_CODE=403
AXES_RESET_COOL_OFF_ON_FAILURE_DURING_LOCKOUT=True
AXES_CLIENT_STR_CALLABLE=None
AXES_COOLOFF_MESSAGE=None
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
'LOCATION': '127.0.0.1:11211',
},
'axes': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
AXES_META_PRECEDENCE_ORDER = [
'HTTP_X_FORWARDED_FOR',
'REMOTE_ADDR',
]
AXES_HANDLER = 'axes.handlers.database.AxesDatabaseHandler'
Если кто-то придумает лучший подход, пожалуйста, опубликуйте его здесь.
В настоящее время я также использую django-axes для пользовательской страницы входа в систему views.py. Я сделал следующее: включил декоратор @axes_dispatch
в функцию входа. В Settings.py убедитесь, что AXES_USERNAME_FORM_FIELD
настроен на поле учетных данных пользователя. В моем случае я использую 'email'. Поэтому его следует изменить на AXES_USERNAME_FORM_FIELD='email'
.
from axes.decorators import axes_dispatch
views.py
@axes_dispatch
def user_login(request):
...
settings.py
AXES_USERNAME_FORM_FIELD='email'