Django аутентификация. Email-адрес вместо имени пользователей

Часто в приложениях, которые мы разрабатываем, необходимо использовать адреса электронной почты для авторизации, а не имя пользователя. Посетителям намного легче помнить свой адрес электронной почты, чем постоянно растущий список имен пользователей на сайтах, так как часто они оказываются заняты.

Чтобы написать простую аутентификацию по email на стороне
сервера в джанго, поступим  следующим образом:

1. В settings.py добавим следующие строки (замените youproject именем вашего приложения):

AUTHENTICATION_BACKENDS = (
    'youproject.backends.EmailAuthBackEnd',
    'django.contrib.auth.backends.ModelBackend',
)

2. Создайте файл с именем backends.py с таким соержанием и поместите его в корневой папке (т.е. той же папке, settings.py)

from django.contrib.auth.backends import ModelBackend
from django.contrib.admin.models import User

class EmailAuthBackEnd(ModelBackend):
    def authenticate(self, email=None, password=None,**kwargs):
        try:
            user = User.objects.get(email=email)  

            if user.check_password(password):
                return user
            return None
        except User.DoesNotExist:
            return None

3. В вашем предствлении(view) импортируйте  authenticate , а затем вызвать функцию аутентификации:

from django.contrib.auth import authenticate
....
user = authenticate(email=email, password=password)

Вот и все.

Следующая запись

Предыдущая запись

Похожие записи

Комментарии

Еще нет комментариев.

Пингбэки

Оповещения открыты.

Трэкбэки

URL архива

Only authorized users can post comments