springboot用户注册、找回密码的邮箱验证码存入redis,三分钟有效

说明

邮箱验证码我们其实在手机验证码还没有普及的时候很常见,笔者是做一个小需求 并没有需要用到手机号去验证,
其实不论是邮箱验证还是手机验证,他们的流程都是差不多的,只是手机号验证需要办理运营商套餐,而邮箱验证
开启邮箱的pop3协议就可以了。
大致流程其实就这几步

  • 使用随机函数生成四位随机数存入redis中,邮箱为key,随机数为value,存活时长三分钟
  • 把随机数通过邮件发送给用户,这个过程最好是异步的,因为邮件的发送也要十来秒
  • 如果用户在三分钟内仍请求发送验证码,检测redis的key中有无该邮箱,如果没有则重新发送,有该邮箱key则不发送

1.首先配置redis,笔者使用RedisTemplate

redisTemplate其实是集成Jedis的redis操作模板,使用起来非常简单。
需要了解其在springboot工程中怎么配置,和其详细的用法,
可以查看笔者的上一篇博客,springboot配置stringRedisTemplate

2.用户注册和找回密码都是通过邮箱来实现的

springboot集成的框架简直多得不要不要的,邮件发送配置一个mail得starter即可,不过需要配置详细得发送人抄送等信息,
配置邮箱和mail的starter发送邮件,可以查看笔者的上一篇博客:SpringBoot使用JavaMailSender发送邮件

3.使用随机数生成四位随机数,当作验证码,并且设置失效时间为三分钟,

	String emailReg = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
	Pattern pattern = Pattern.compile(emailReg);
	Matcher matcher = pattern.matcher(email);
	if(matcher.find()){		//验证邮箱格式是否正确
            String code = String.valueOf((int)((Math.random()*9+1)*1000));  //四位随机数验证码
            //向redis里存入数据和设置缓存时间
            redisTemplate.opsForValue().set(email, code, 60 * 3, TimeUnit.SECONDS);
            try {
                emailService.sendEmail("123456***@163.com",email,"验证码",code);
                data.put("code","success");
                data.put("msg","验证码发送成功,三分钟有效,请注意查收!");
            } catch (Exception e) {
                e.printStackTrace();
                data.put("code","error");
                data.put("msg","无法发送邮件,请稍后重试!");
            }
        }else {
            data.put("code","error");
            data.put("msg","邮箱格式不正确!");
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高并发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值