Go项目实战--用户密码的安全修改和重置

这节我们继续Go项目的实战开发,首先再看一下项目要实现的功能的用例图

图中用户认证相关的功能我们已经开发完了,在前面的四节课中详细地记述了他们的设计和开发过程,这一节我们行进到功能用例的第二大部分--用户个人信息管理。

前面两节我们还埋下了一个扣,说用户在修改密码后需要把用户在所有登录平台上的Token和Session全部清除掉,强制用户在每个平台上用新密码重新登录,这也是一项安全措施。那么这一节我们就先来开发用户密码的修改/重置,

重置密码的流程拆解和安全防护

用户在登录态下修改和重置密码比较好实现,很多产品的逻辑是登录情况下输入原密码、新密码就可以修改,而用户在无登录状态下做上面这些操作即找回密码的功能则需要通过让用户填写服务器发送给他们的验证码,进行确认后才能为用户修改密码。

我们这里就直接分析重置密码的功能吧,这个功能在逻辑实现上更完善一些,拿来做修改密码功能也能用。

重置密码的整个流程中服务端内部做了什么,和客户端怎么交互的,我用一张顺序图给大家做了梳理。大家先看一下:

每个产品重置用户密码的功能实现跟这里说的可能有细微差别,但总体流程应该差不多。

  • 客户端首先发起申请重置密码的请求,请求中需要提交它的邮箱/手机号

  • 服务端验证用户是否存在、是否为正常状态,然后生成重置密码的Token和六位验证码

    • 以Token为Key,将用户的ID和验证码存储到Redis,用于后续重置密码时的安全验证,缓存设置一个较短的有效期,比如半小时过期

    • 通过邮件/短信的形式把验证码发送给用户

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值