找回密码功能的流程总结

公司业务里需要做密码找回的功能。 使用邮件验证的方式实现密码找回。

当用户忘记自己密码的时候 , 可以通过输入自己的邮件号 , 系统发送携带验证码的邮件号来验证用户身份。 但是使用这样的验证方式,当用户的预留邮箱也被盗了之后,那么这种验证方式就无效了。这是实现功能前需要明白的。

接下来,梳理一遍流程。 流程如下:

前置条件为: 用户已经注册(即库中账户表存在该用户记录 , 且邮箱号为非空必填字段 , 有唯一性)

应用场景: 用户忘记自己的密码

找回流程:

               1:用户忘记密码, 点击找回密码按钮。进入找回密码页面1.

                2: 用户在 页面1中输入---用户名 ---- 邮箱 , 点击获取邮箱验证码。

                3:系统给用户发送邮箱验证码, 用户收到后, 在页面1中输入验证码。

                4:前端将验证码发送给系统, 系统核实验证码是否正确。

                5:验证码正确, 进入页面2 , 页面2输入新秘密。

                6:提交新秘密, 系统更新用户密码。

流程图如下:

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现找回密码功能通常需要以下几个步骤: 1. 用户输入邮箱或手机号码,点击找回密码按钮。 2. 后台接收到用户请求后,生成一个随机的验证码,并将验证码发送给用户的邮箱或手机。 3. 用户输入收到的验证码和新密码,点击确认按钮。 4. 后台接收到用户提交的数据后,验证验证码是否正确,如果正确则更新用户的密码。 以下是使用SSM框架实现找回密码功能的简单流程: 1. 在用户输入邮箱或手机号码后,通过Controller层将数据传递到Service层进行处理,Service层根据用户输入的信息查询数据库,判断该用户是否存在。 2. 如果用户存在,则生成一个随机的验证码,并将验证码发送给用户的邮箱或手机。可以使用JavaMail或者第三方短信接口实现。 3. 用户输入收到的验证码和新密码,点击确认按钮后,通过Controller层将数据传递到Service层进行处理,Service层根据用户输入的验证码和新密码,更新用户的密码。 4. 如果验证码不正确,则返回错误信息给用户。 具体实现可以参考以下步骤: 1. 在Controller层,创建一个请求找回密码的接口,接收用户输入的邮箱或手机号码,并将数据传递到Service层处理。例如: ```java @RequestMapping("/resetPassword") @ResponseBody public String resetPassword(String account) { userService.sendVerifyCode(account); return "success"; } ``` 2. 在Service层,实现发送验证码的方法。例如: ```java public void sendVerifyCode(String account) { User user = userDao.selectUserByAccount(account); if (user == null) { throw new BusinessException("用户不存在"); } String code = generateVerifyCode(); String content = "您正在进行找回密码操作,验证码为:" + code; if (isEmail(account)) { sendEmail(account, content); } else { sendSms(account, content); } // 将生成的验证码保存到缓存中,用于后续的验证 redisTemplate.opsForValue().set(account, code, 10, TimeUnit.MINUTES); } ``` 3. 在Controller层,创建一个确认修改密码的接口,接收用户输入的验证码和新密码,并将数据传递到Service层处理。例如: ```java @RequestMapping("/confirmResetPassword") @ResponseBody public String confirmResetPassword(String account, String code, String password) { userService.resetPassword(account, code, password); return "success"; } ``` 4. 在Service层,实现修改密码的方法。例如: ```java public void resetPassword(String account, String code, String password) { String verifyCode = redisTemplate.opsForValue().get(account); if (StringUtils.isEmpty(verifyCode) || !verifyCode.equals(code)) { throw new BusinessException("验证码错误"); } int result = userDao.updatePasswordByAccount(account, password); if (result == 0) { throw new BusinessException("修改密码失败"); } // 修改密码成功后,将缓存中的验证码删除 redisTemplate.delete(account); } ``` 以上是一个简单的SSM实现找回密码功能流程,具体实现可以根据自己的需求进行调整。另外,为了保证数据安全,建议在发送验证码时采用加密方式,并使用HTTPS协议进行传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值