900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 使用阿里云短信服务做手机找回密码功能

使用阿里云短信服务做手机找回密码功能

时间:2023-12-19 04:11:41

相关推荐

使用阿里云短信服务做手机找回密码功能

此功能是基于springboot+redis制作

阿里云的短信服务怎么用百度上教程也是铺天盖地我就不多做阐述,那么我们就直接步入正题,如何通过手机短信验证码进行密码重置操作。直接贴代码。

//注入redisprivate RedisTemplate redisTemplate;@Resourceprivate UserService userService;@RequestMapping("/Code")public Result getCode(String phone){if(phone == null){return new Result("300","请输入手机号",null,null,null);}// 获取验证(sendMessage(String phone)做了处理,将随机生成的6位数字return给了sendMessage,)String dateCode = SendSms.sendMessage(phone);//将手机号作为key值 验证码作为value值存入redis里面去redisTemplate.opsForValue().set(phone,dateCode);//设置redis过期时间redisTemplate.expire(phone,86400, TimeUnit.SECONDS);return new Result("200","发送成功,注意查收!",null,null,null);}@RequestMapping("/verification")public Result verification(String phone, String dateCode, HttpSession session) throws Exception {//service层里面查出手机号User user = userService.selectUserByPhone(phone);//判断user是否为空 为空执行以下操作if(user == null){return new Result("301","此号码不存在,请核对是否有误!",null,null,null);}//根据key取出value值 value值为验证码String code = redisTemplate.opsForValue().get(phone);//验证码逻辑操作if(code == null || code.equals("")){return new Result("302","验证码已过期,请重新获取!",null,null,null);}else{if(!dateCode.equals(code)){return new Result("300","验证码输入有误",null,null,null);}}//取出请求的sessionidString id = session.getId();//sessionid作为key值 电话作为value值出入redis中redisTemplate.opsForValue().set(id,phone);//设置过期时间redisTemplate.expire(id,30,TimeUnit.SECONDS);return new Result("200",phone,null,null,null);}@RequestMapping("/changePwd")public Result changePwd(String pwd,HttpSession session) throws Exception {//取出请求的sessionidString sessionId = session.getId();//取出sessionid对应的value值也就是电话号码String phone1 = redisTemplate.opsForValue().get(sessionId);//通过service查询电话User user = userService.selectUserByPhone(phone1);//将新的密码存入user对象中user.setPwd(MD5Util.MD5(pwd));userService.update(user);return new Result("200","重置成功",null,null,null);}}

数据验证可以前端验证或者后端验证都可以,我这边后端没有做过多的数据验证需要的可以自己自行添加。

上面的代码是controller的代码 service层 和serviceimpl层如何写的代码里面也有体现。

我做了密码MD5加密,不需要的可以自行删除

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。