【问题标题】:How to use Custom User Model for authentication Djoser - Django如何使用自定义用户模型进行身份验证 Djoser - Django
【发布时间】:2018-10-01 01:33:11
【问题描述】:

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

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

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

由于之前在项目中使用的表格只需要使用这些表格。

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

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

【问题讨论】:

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


【解决方案1】:

创建一个从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'
    }
    ...
}

【讨论】:

    【解决方案2】:

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

    Here 是相关文档。

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

    Djoser 和许多其他与身份验证相关的包使用AbstractUser 提供的功能

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-02
        • 1970-01-01
        • 2020-09-26
        相关资源
        最近更新 更多