如何使用自定义用户模型进行身份验证Djoser-Django

时间:2018-10-01 01:33:12

标签: python django authentication django-rest-framework custom-authentication

从文档中不清楚,但是我想实现两件事:

  1. 使用我的自定义用户模型,该模型继承自models.Model。

  2. 它具有一个密码字段,该字段使用sha1存储密码。我需要使用带有该密码字段的模型进行身份验证。

因为,表是按项目原样使用的,所以只需要使用这些表即可。

我需要使用任何基于令牌的身份验证。

有人可以指出正确的方向吗?我阅读了django-rest-framework文档,它指出了将Djoser用于自定义用户模型。但是我无法弄清楚。如何。

3 个答案:

答案 0 :(得分:1)

您不应创建继承自models.Model的自定义用户,而应使用AbstractUser

Here是相关文档。

如果您遵循Django docs,Djoser应该可以正常工作。

Djoser和许多其他与auth相关的软件包使用AbstractUser

提供的功能

答案 1 :(得分:0)

您可以使用JWT令牌认证。 http://getblimp.github.io/django-rest-framework-jwt/。如果您在设置文件中将AUTH_USER_MODEL设置为自定义用户模型,则它将验证用户。或者,您可以编写用于身份验证的自定义方法。

答案 2 :(得分:0)

创建一个继承自模型的自定义用户模型。使用ModelUser或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'
    }
    ...
}