从文档中不清楚,但是我想实现两件事:
使用我的自定义用户模型,该模型继承自models.Model。
它具有一个密码字段,该字段使用sha1存储密码。我需要使用带有该密码字段的模型进行身份验证。
因为,表是按项目原样使用的,所以只需要使用这些表即可。
我需要使用任何基于令牌的身份验证。
有人可以指出正确的方向吗?我阅读了django-rest-framework文档,它指出了将Djoser用于自定义用户模型。但是我无法弄清楚。如何。
答案 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'
}
...
}