前后端配合实现密码找回功能思路
-前后端配合实现密码找回功能
前端-邮箱验证
用户进入忘记密码页面(localhost:8080/#/FindPwd),将用户名和图形验证码填入。前端对用户名进行后端校验(调用后端的api判断该用户名是否存在),如果用户不存在,给出相关提示;如果用户存在,然后调用发送邮件的后端api(携带用户名信息)
后端-发送邮件
后端接收到前端发送邮件的请求后,通过用户名从数据库查找对应的邮箱,发送邮件(邮件的形式是一些介绍说明和一个前端链接,该链接的形式为
localhost:8080/#/ResetPwd?token=yP1K8viNMKhv2HfDIPpS8exF21pPdVt8y9LP8AklXv78jPMImA4V7dJ5EMw1vJM7LcZ7BfDpXE1GHhdMga3r0A==)
其中localhost:8080为前端的ip和端口,后端可以从http请求头中的Origin中获取,这里用localhost:8080作为示例。而token中携带了加密信息(其中可以包含用户信息,用来作为重置密码页面的提示内容;其中必须包含用户id,失效时间等关键信息)。
发送邮件后,给前端响应,通知前端邮件是否发送成功。前端拿到这个结果,相应地给用户提示(如:"邮件发送成功,请前往邮箱查收")
前端-解密链接
用户点击链接打开页面,前端对链接中的token查询字符串进行解密,调用后端解密的api,传入token值,解密可以得到用户id,失效时间等信息。前端获取到失效时间后,与当前时间做对比,如果已经过期,则提示用户;如果未过期,则展示重置密码页面。用户需要填入新密码,点击确认,进行密码重置。此时前端携带用户id和加密过的新密码发送重置密码的请求给后端api,后端返回成功后,前端提示用户修改成功。