Django, переопределение " аутентифицируется ()", когда у нас есть электронная почта вместо имени пользователя


Я использую приложение django-email-as-username для использования электронной почты, а не имени пользователя для аутентификации, и это работает как шарм.

Теперь в view я хочу позвонить

if request.user.is_authenticated()
Но этот метод просто аутентифицирует пользователей на основе (имя пользователя+пароль), а не (электронная почта+пароль). Как я должен справиться с этим ?

Есть предложения ?

1 2

1 ответ:

В Django is_authenticated() всегда возвращает True для User экземпляров и всегда возвращает False для AnonymousUser экземпляров. Это не имеет ничего общего с именем пользователя/паролем/электронной почтой и django-email-as-username не изменяет это поведение.

Смотрите исходный код Django :

# In User class line 279
def is_authenticated(self):
    """
    Always return True. This is a way to tell if the user has been
    authenticated in templates.
    """
    return True