@Log("重置密码-输入手机号,点击下一步")@PostMapping("/forget/step1")@ResponseBodyR forget1(String phoneNumber) {
// 用户名是不是已经被注册UserDO userDO = userService.getByUserName(phoneNumber); // 查询该用户名信息System.out.println("forget1 :" + userDO.getEmail());if (userDO != null) {String xingxing = "************************************************************";String zi01 = userDO.getEmail().split("\\@")[0];String zi02 = userDO.getEmail().split("\\@")[1];int changdu = zi01.length() - 4;String xin = zi01.substring(0, 4) + xingxing.substring(0, changdu) + "@" + zi02;String zhi = UUID.randomUUID().toString() + ":" + phoneNumber;System.out.println("forget2 :" + zhi);//将邮箱确认信息添加到redis中,0表示未确认,1表示邮箱已经确认过if (redisTemplate.opsForHash().hasKey("fogetPwd:mailConform", phoneNumber)) {System.out.println("forget3 :" + zhi);redisTemplate.opsForHash().delete("fogetPwd:mailConform", phoneNumber);redisTemplate.opsForHash().put("fogetPwd:mailConform", phoneNumber, zhi);  //未确认是0,已确认是1} else {System.out.println("forget4 :" + zhi);redisTemplate.opsForHash().put("fogetPwd:mailConform", phoneNumber, zhi);}String hreff = "http://ip:端口/forget/mailConform/" + zhi;//往邮箱发送一个字符串sendHTMLMail(userDO, hreff);return R.ok("已经向" + xin + "发送了邮件,请前往确认!");} else {return R.error("没有该手机号的注册信息!");}}void sendHTMLMail(UserDO userDO, String content) {MimeMessage message;System.out.println("mail send 01 ");try {message = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message, true, "utf-8");mimeMessageHelper.setFrom("365556466@qq.com", "大步学习");mimeMessageHelper.setTo(userDO.getEmail());mimeMessageHelper.setSubject("密码重置确认");StringBuilder sb = new StringBuilder();sb.append("<h1>密码重置确认</h1>").append("<a href='" + content + "'>" + "点击这里" + "</a>");mimeMessageHelper.setText(sb.toString(), true);javaMailSender.send(message);} catch (Exception e) {e.printStackTrace();System.out.println("邮件发送失败 ");logger.error("邮件发送失败", e.getMessage());}}@Log("点击邮箱中的链接,会调用此接口")@RequestMapping("/forget/mailConform/{content}")@ResponseBodyString mailConform(@PathVariable("content") String content) {System.out.println("forget/mailConform  :" + content);String phoneNumber = content.split("\\:")[1];if (redisTemplate.opsForHash().hasKey("fogetPwd:mailConform", phoneNumber)) {if (redisTemplate.opsForHash().get("fogetPwd:mailConform", phoneNumber).equals(content)) {redisTemplate.opsForHash().delete("fogetPwd:mailConform", phoneNumber);redisTemplate.opsForHash().put("fogetPwd:mailConform", phoneNumber, "1");  //未确认是0,已确认是1}}return "请回到密码重置页,继续操作";}@Log("重置密码-点击邮箱确认继续")@PostMapping("/forget/step2")@ResponseBodyR forget2(String phoneNumber) {//将邮箱确认信息添加到redis中,0表示未确认,1表示邮箱已经确认过if (redisTemplate.opsForHash().hasKey("fogetPwd:mailConform", phoneNumber)) {String zhi = redisTemplate.opsForHash().get("fogetPwd:mailConform", phoneNumber).toString();if (zhi.equals("1")) {return R.ok();} else {return R.error("邮箱未确认!!!");}}return R.error("邮箱未确认!!!");}@Log("重置密码-点击邮箱确认继续")@RequestMapping("/forget/step3")@ResponseBodyR forget3(String phoneNumber, String pwd) {System.out.println(phoneNumber + " :" + pwd);try {System.out.println("update 0");UserDO userDO = userService.getByUserName(phoneNumber); // 查询该用户名信息userDO.setPassword(MD5Utils.encrypt(phoneNumber, pwd));  //登录密码System.out.println("update 1");userService.update(userDO);System.out.println("update 2");return R.ok();} catch (Exception e) {e.printStackTrace();return R.error();}}

FR:徐海涛(hunk Xu)
QQ技术交流群:386476712

java后台 重置手机密码(邮箱点击确认)相关推荐

  1. java后台实现用户密码登录和手机短信登录

    1.账号密码登录:获取用户名.密码,检验是否存在该账号,以及该账号是否有效(未冻结.未删除),检验密码是否正确 public Result<JSONObject> login(@Reque ...

  2. Android,ios,安卓app推送消息通知,java后台向手机推送app的通知教程

    文章目录 一.业务介绍 1.1 产品简介 1.2 名词解释 1.3 消息推送流程 二.应用创建 三.客户端 SDK 集成 3.1 Android 3.2 iOS 四.服务端推送 4.1 服务端消息下发 ...

  3. Java后台校验修改密码强度工具类

    /*** @Author: Mr.ZJW* @Date: 2022-05-31 16:52* @Description: 密码校验工具类*/ public class PwdCheckUtil {pu ...

  4. 汉德笔试,感觉有些难的手机密码的动态规划题

    汉德公司的笔试编程题有两个,一个很简单,另一个感觉是加分题,当场没做出来后来做出来了. 1.充电桩 N个电桩 第一个输入为ele数组,就是能充多少电,第二个输入为耗电数组,到下一站费多少电,要求输出为 ...

  5. 重置手机_【轻松办税】ITS客户端申报密码重置不会操作?看过来,3分钟包你会!...

    ITS扣缴客户端实名办税功能已经上线了,并且在2020年1月1日后将不再支持以CA方式进行登录,可是公司申报密码是很久前去大厅办理的,早就忘记了,这可咋好? 别急,快来关注"上海税务&quo ...

  6. android手机更改手机密码,手机忘记密码如可解决 安卓手机重置密码教程【详解】...

    许多安卓手机用户都会为自己的手机设置一个密码,方便保护自己的手机隐私,但是密码变化多次之后,自己有时候也会忘记密码,尤其是图形密码,更是容易记混了.那么,安卓手机忘记密码该怎么办呢?一起来看看今天小编 ...

  7. java酒吧系统源代码_bar 小型酒吧在线管理系统,后台用户名和密码都是admin Jsp/Servlet 238万源代码下载- www.pudn.com...

    文件名称: bar下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 14713 KB 上传时间: 2013-04-10 下载次数: 1 提 供 者: jelly 详 ...

  8. 如果华为手机忘记锁屏密码!点击这个按钮,1分钟即可清除密码

    现在的智能手机都基本是指纹.人脸解锁,虽然这种解锁方便快捷,但重启手机还是要输入锁屏密码. 有些时候大脑会突然短路不记得锁屏密码,而且试了半天也没有成功,那这时候该怎么办呢?其实可以点击华为手机的这个 ...

  9. Java 后台实现 发送手机短信的功能(中国网建)

    Java 后台实现 发送手机短信的功能(中国网建) 效果截图: 一.准备阶段 (1)准备第三方平台: 发送短信肯定是需要第三方平台,并且是收费的. 本篇以[中国网建]提供的 SMS 短信平台实现,该平 ...

最新文章

  1. JavaWeb笔记01
  2. 姚期智担纲,清华今日成立量子信息本科班!“着眼学术尖端,致力国家战略需求“...
  3. php 清空输入缓存,用PHP清理用户输入的最佳方法是什么?
  4. 2018-2019-1 20165201 《信息安全系统设计基础》第6周学习总结
  5. 学python好不好-26岁了,自学Python怎么样?
  6. 总结2020,起航2021,奔向腾讯,实现增长!
  7. Kubernetes 稳定性保障手册:洞察+预案
  8. 下载大文件 不经过php 直接让apache发送文件给客户端 mod_xsendfile
  9. linux怎样自制库_如何制作自己的LINUX系统?
  10. 侧栏广告 image flash
  11. 大学心理学课本_2019年北京师范大学765真题分析
  12. Visual Studio爆炸! -VS2010 SP1 * BETA *已发布,上下文
  13. 基于javacv的视频转码(升级版)
  14. python识别图片文字_python实现简单图片文字识别翻译OCR
  15. 从外观来看微型计算机由哪几个部分组成,福师11春学期《计算机应用基础》在线作业一...
  16. pip install 后面加个点是什么意思?
  17. 配置系统未能初始化 错误的解决方案
  18. windows使用命令行创建文件echo >test.txt(可以是.gp .js .ts..)
  19. android 贝塞尔曲线,即3点画弧线
  20. 学Linux选择什么系统比较好?

热门文章

  1. (转)ubuntu软件列表
  2. 【第一个项目开发】创建domain包中的类
  3. [经典收藏]1200个Photoshop经典实例打造ps高手!
  4. equals和hashcode方法
  5. 关于MHT文件研究(一)
  6. HTML+CSS 登录界面设计
  7. 解决Error: ENOENT: no such file or directory, scandir 安装node-sass报错
  8. python打卡以及Linux自动运行python文件
  9. 介绍两款常用的“图表统计图的插件
  10. XGboost如何调用保存好的模型