Страница неактивного аккаунта не работает в django-allauth
Я успешно установил систему аутентификации в приложении django, используя популярный пакет django-allauth. Я приостановил зарегистрированного пользователя, обновив SuspendedUser.is_active=False, но всякий раз, когда я пытаюсь войти в систему как приостановленный пользователь, я получаю сообщение о неудачной аутентификации The username and/or password you specified are not correct..
Нужна ли мне какая-то специальная конфигурация для отображения шаблона account_inactive.html, так как я не могу найти ничего, что упоминало бы об этом в официальной документации?
Примечание: версия django-allauth 0.49.0 и версия django 4.0.3
Вы можете переопределить функцию входа в систему django-allauth. И вы можете создать поле под именами вашей модели пользователя is_suspended вместо того, чтобы давать is_active=False. А в функции login перед login() поместить оператор if.
#in django-allauth login function
if request.user.is_suspended:
message(request,'You have suspended! Cannot login!')
return
render(request, 'user/user_policy.html' {'message':message})
или поиск сигналов джанго-аллют
#in User model:
class User(models.Model):
...
...
...
is_suspended = models.BooleanField(default=False)
Просмотрев свои конфигурации, я понял, что использую пользовательский бэкенд аутентификации в моем settings.py файле. django-allauth требует allauth.account.auth_backends.AuthenticationBackend для обработки аутентификации и разрешений.
Добавление этого в конфигурацию моего проекта решило проблему
AUTHENTICATION_BACKENDS = [
# Needed to login by username in Django admin, regardless of `allauth`
'django.contrib.auth.backends.ModelBackend',
# `allauth` specific authentication methods, such as login by e-mail
'allauth.account.auth_backends.AuthenticationBackend',
]
Хотя это было заявлено в docs