美文网首页
“忘记密码”设计

“忘记密码”设计

作者: 星期六1111 | 来源:发表于2017-10-19 00:50 被阅读103次

问题描述

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

矛盾点

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

问题解决

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

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

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

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

  • 判断前端传来的email是够存在于user表中
  • 如果存在,根据email找当前人的userId,不存在则说明用户填的email可能就是错的
  • 根据userId来找重置密码表中数据.
  • 如果数据存在,说明此用户可能不止一次的重置过密码,在一堆数据中找近距离当前时间最近的,判断当前时间和数据库的时间的差,时间限制内,提示已输入过名密码
  • 如果数据不存在,证明此人是第一次重置密码,在重置密码表中save数据并发邮件

更新密码api:

  • uuid的正确性判断,防止随便输入uuid进行更改
  • 如果没有超过期限,更新密码,并将isVaild 置为1,说明uuId已经失效
  • 若已超过期限,提示连接失效

反思

  • 做的过程中要先写后端再写前端,设计好之后再开始写
  • 邮件中的地址需要不同环境的url,url环境变量还没有解决

action

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

相关文章

  • 忘记密码页面设计

    忘记密码: “忘记密码”模块设计包括两部分: ①重置密码页面 ②输入新密码页面

  • “忘记密码”设计

    问题描述 要实现一个忘记密码的功能:点击忘记密码连接->进入新的页面->输入邮箱->点击确定后发邮件->点击邮件中...

  • 忘记密码

    具体步骤如下:修改MySQL的配置文件(默认为/etc/my.cnf),在[mysqld]下添加一行skip-gr...

  • 忘记密码

    前段时间收拾东西时发现了寻找好久的一个存折,折里只有几百元钱,但却意义不同。找到了全是意外惊喜。当时我真的服自己的...

  • 忘记密码

    鱼儿换手机了,不得不换,原来的手机电池维持不到半小时上网就耗尽电量,鱼儿很是烦恼。好在不久前她brother’s ...

  • 忘记密码

    现在买东西,年轻人大部分都是手机支付,不管是支付宝还是微信,方便快捷,扫一扫二维码,输入金额,再按下指纹支付,简单...

  • 忘记密码

    现在各种账号,密码随着账号走,除手机支付宝密码经常用记得以外,其它密码找回主要靠手机短信了。 这张银行卡的秘码前一...

  • 忘记密码

    忘记密码的情况越来越常见,虽然尽量在设置上有统一规律,虽然尽量使用指纹或头像,但还是经常性会忘记,尤其是换了新手机...

  • 忘记密码

    许久未用笔记本电脑了,今日打开,竟忘记了此前设置的开机密码,试了各种可能的字符,可就是打不开。 有些焦急,开始焦虑...

  • 忘记密码

    经销商库存管理中有一软件,登陆需要用户名和密码。 好久不用居然把密码忘记了,一次次试,一次次提示用户名或密码错误。...

网友评论

      本文标题:“忘记密码”设计

      本文链接:https://www.haomeiwen.com/subject/hxieuxtx.html