Djoser: Password Reset with Username



我使用Django开发了一个应用程序。它使用Djoser进行用户身份验证。

问题:我已经允许用户注册已经存在的电子邮件地址,即可能有多个用户使用相同的电子邮件ID。所以我不能重置密码与电子邮件字段。要么我必须只使用用户名,要么用户名和电子邮件的组合。

我该怎么做?

注意:-使用基本端点/users/reset_password/,但它只需要电子邮件重置密码。

一种解决方案是在djoserSendEmailResetSerializer中添加另一个字段.并在SendEmailResetSerializer中执行额外的验证。get_user方法或验证方法。

的例子:

  1. 在settings文件中添加自定义SendEmailResetSerializer的路径
DJOSER = {
'SERIALIZERS': {
'password_reset': 'path.to.CustomSendEmailResetSerializer',
},
}
  1. 定义自定义序列化器(继承djoser SendEmailResetSerializer.)并添加一个字段,例如username .
class CustomSendEmailResetSerializer(SendEmailResetSerializer):
username = serializers.CharField(required=True)
  1. 在get_user方法或validate方法中执行额外的验证
class CustomSendEmailResetSerializer(SendEmailResetSerializer):
username = serializers.CharField(required=True)
def get_user(self, is_active=True):
# Retrieve user here.
return user

相关内容

  • 没有找到相关文章

最新更新