Как использовать Custom User Model для аутентификации Djoser - Django - PullRequest
0 голосов
/ 01 октября 2018

Это не ясно из документации, но я хочу добиться 2 вещей:

  1. Использовать мою пользовательскую модель, которая наследуется от models.Model.

  2. Имеется поле пароля, в котором хранится пароль с помощью sha1.Мне нужно использовать модель с этим полем пароля для аутентификации.

Поскольку таблицы использовались так, как это было в проекте ранее, нужно использовать только эти таблицы.

Iнеобходимо использовать любую аутентификацию на основе токенов.

Может кто-нибудь указать правильное направление.Я прочитал документацию по django-rest-framework, он указал на использование Djoser для пользовательской модели.Но я не могу понять это.Как.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Не следует создавать пользовательского пользователя, наследующего от models.Model, вместо этого используйте AbstractUser

Здесь являются релевантными документами.

Если вы следуете документам Django, Djoser долженработать без проблем.

Djoser и многие другие пакеты, связанные с аутентификацией, используют функциональность, предоставляемую AbstractUser

0 голосов
/ 29 декабря 2018

создание пользовательского Пользовательская модель, наследуемая от models.Model - очень плохая идея, вместо этого используйте AbstractUser или AbstractBaseUser.

Создав пользовательский, вы установили AUTH_USER_MODEL для своей пользовательской модели в settings.py.

Затем просто импортируйте сериализатор регистрации пользователей Djoser и переопределите его.

from djoser.serializers import UserCreateSerializer as BaseUserRegistrationSerializer

class UserRegistrationSerializer(BaseUserRegistrationSerializer):
    class Meta(BaseUserRegistrationSerializer.Meta):
        fields = ('city', 'state', 'email', 'name', 'last_name', 'account_address', 'password', )

Вы также можете переопределить другие вещи в сериализаторе, такие как методы создания и обновления, в случае, если вы хотите настроить его..

И в settings.py скажи djoser использовать его так, как это было

DJOSER = {
    ...
    'SERIALIZERS': {
         'user_create': 'yourapp.serializer.UserRegistrationSerializer'
    }
    ...
}
0 голосов
/ 01 октября 2018

Вы можете использовать аутентификацию токена JWT.http://getblimp.github.io/django-rest-framework-jwt/. Если вы установите AUTH_USER_MODEL в своем файле настроек на свою пользовательскую модель, тогда она будет проверять пользователя.Или вы можете написать собственные методы для аутентификации.

...