“忘记密码”设计

2017-10-19  本文已影响103人  星期六1111

问题描述

要实现一个忘记密码的功能:点击忘记密码连接->进入新的页面->输入邮箱->点击确定后发邮件->点击邮件中的连接,进入新的页面->输入新的密码和确认密码->点击确定,重置密码成功后重新登录

矛盾点

老师提醒说这里需要一张表,但不知道这个表做什么

问题解决

Q1:虽然很清楚userJourney,但细节却不清楚,如:邮件中的链接应该长什么样?
A1:分析,首先,这个链接应该有两个特点:一是有效期,二是唯一性,两者都是安全性的考虑,防止可以随意在任何时候输入链接都可以随意修改密码。

Q2:如何保证上面两个特点?
A2:唯一性可以使用随机生成一段字符串uuID来保证,每一封邮件中这个字符串都是唯一的,并使用过以后都失效。有效期可以设置过期时间来保证,通过生成字符串的时间为开始时间,规定一段时间后连接失效,则该字符串也不能再使用。

Q3:生成的字符串uuId应该需要和填入密码后请求带来的uuid进行比较,那么uuid应该存在哪?
A3:表,这时自然而然的就想到了表,表中除存储uuid,还有什么了?uuid的生成时间,userId,是否过期的表示isvaild

Q4:表有了,如何根据这表设计API?
A4: 首先,我们需要两个api,一个需要往表中存数据并发邮件;另外一个需要需要去更新user表中的密码。
存数据发邮件的api

更新密码api:

反思

action

写代码之前要设计好,如:表结构,考虑清楚可能的异常情况,最后再开始写代码

上一篇 下一篇

猜你喜欢

热点阅读