标签:注册 通过 五步 描述 style 操作 find 表结构 因此
一个大型网站平台,用户自主注册难免会有用户忘记密码,因此需要提供找回密码功能。
本方案是通过邮箱找回密码。
找回密码表(FindPwdRecord):
字段名
类型
描述
备注
ID
string
主键
UserID
string
用户ID
UserName
string
用户名
Token
string
找回密码的凭证
通过随机算法生成的无重复字串
string
邮箱地址
CreateTime
Datetime
发起时间
ExpiryTime
Datetime
失效时间
IsExpiried
bit
状态
0正常,1已失效
设计思路
用户需要找回密码时向后台发送请求,当后台判断用户可以找回密码时生成一条记录插入到数据库中,并将凭证作为连接参数发送到邮箱。
客户点击修改密码连接时,后端首先验证凭证,以下几种情况判定凭证无效,
如果凭证有效,提供重置密码的表格,用户填写新密码,和凭证一起提交到后端,后端首先验证凭证是否已失效(IsExpiried=1),如果没有被使用过(IsExpiried=0)则修改密码并将凭证的状态修改为已失效。此步验证避免并发。
用户点击找回密码连接,先提示用户填写用户名,并输入验证码,(如果有手机短信模块,这块可以发送验证码到预留手机)点击确定:
验证验证码正确并且用户名存在,跳转到找回密码界面,部分显示用户的预留邮箱,如下:
用户填写完整邮箱后,点击确定,后端验证邮箱是否和预留邮箱一致,如果一致则执行如下操作:
邮箱内容如下:
用户通过点击邮箱中的重置密码连接,后端验证token令牌,如果合法,则显示重置密码的表单,否则提示用户连接无效,重置密码页面如下:
重置密码的请求参数中需要包含重置密码的凭证Token,后端收到请求为了避免一个链接使用多次,仍然要验证token的有效性,
当Token有效了,重置用户的密码,并将找回密码记录(FindPwdRecord)的是否失效字段(IsExpiried)修改为1,。
提示用户密码重置成功,并跳转登录页面:
标签:注册 通过 五步 描述 style 操作 find 表结构 因此
原文地址:https://www.cnblogs.com/lpz89/p/8992776.html