Skip to main content

重置密码接口实现

在本节课中,我们将介绍如何实现用户忘记密码的功能。我们使用Djoser模块提供的接口来实现此功能。

1. 设置重置密码链接

在使用重置密码功能时,我们需要设置一个参数 PASSWORD_RESET_CONFIRM_URL,用于确定发送重置密码链接的地址。在 settings.py 文件中,我们可以通过以下方式进行配置:

dx_movie/dx_movie/settings.py
# Djoser配置
DJOSER = {
'USER_ID_FIELD': 'username',
'LOGIN_FIELD': 'email',
'SEND_ACTIVATION_EMAIL': True,
'ACTIVATION_URL': 'activate/{`uid`}/{`token`}',
'SEND_CONFIRMATION_EMAIL': True,
'PASSWORD_RESET_CONFIRM_URL': 'password_reset/{`uid`}/{`token`}',
'PASSWORD_RESET_CONFIRM_RETYPE': True,
'PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND': True,
'SET_PASSWORD_RETYPE': True,
'SERIALIZERS': {
"user_create": "account.serializers.CustomUserCreateSerializer",
}
}
参数说明

上述 djoser 的配置参数用于自定义和配置 djoser 的行为。以下是对每个配置参数的解释:

  1. USER_ID_FIELD

    • 指定用作用户标识的字段。在这个例子中,用户标识字段被设置为 'username',表示用户通过其用户名进行标识。
  2. LOGIN_FIELD

    • 指定用于用户登录的字段。在这个例子中,用户登录时需要使用电子邮件地址进行身份验证。
  3. SEND_ACTIVATION_EMAIL

    • 一个布尔值,指示是否在用户注册后发送激活邮件。如果设置为 True,用户将收到包含激活链接的邮件,需要点击链接以激活其账户。
  4. ACTIVATION_URL

    • 指定用户激活链接的 URL 格式。在这个例子中,激活链接的格式为 'activate/uid/token'。
  5. SEND_CONFIRMATION_EMAIL

    • 一个布尔值,指示是否在用户更改电子邮件地址后发送确认邮件。
  6. PASSWORD_RESET_CONFIRM_URL

    • 指定重置密码确认链接的 URL 格式。在这个例子中,确认链接的格式为 'password_reset/uid/token'。
  7. PASSWORD_RESET_CONFIRM_RETYPE

    • 一个布尔值,指示在重置密码时是否要求用户重新输入新密码进行确认。
  8. PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND

    • 一个布尔值,指示在密码重置时,如果找不到与提供的电子邮件地址匹配的用户,是否显示电子邮件地址未找到的错误信息。
  9. SET_PASSWORD_RETYPE

    • 一个布尔值,指示在设置密码时是否要求用户重新输入密码进行确认。
  10. SERIALIZERS

    • 一个字典,用于指定 djoser 使用的序列化器。在这个例子中,使用了自定义的 CustomUserCreateSerializer 作为用户创建的序列化器。

这些配置参数允许你根据你的项目需求自定义和配置 djoser 的行为。

请求接口

djoser自带的接口,我们只需要按照规则请求即可。发送邮件修改密码的接口如下所示:

图41-请求修改密码接口

如果邮箱未注册,提示错误如下所示。

图41-验证邮箱是否存在

获取'uid'和token后,可以重置密码,接口如下所示。

图41-修改密码