SpringBoot 整合Hutool工具类实现邮箱验证码登录

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: SpringBoot 整合Hutool工具类实现邮箱验证码登录

1:引入hutool工具类依赖

在项目的pom.xml的dependencies中加入以下内容:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

2:打开邮箱SMTP服务

我举俩个例子:

1:126邮箱

c4ec12a749224fc99e7e4ec49685f16f.png

2:qq邮箱

f6b8538497754af4b24cf942fbe9712c.png

f6bbddb2ba1940c5802d8c2aeb708704.png

开启后会有SMIP 码(一串字母)

3:在SpringBoot resource 目录下新建一个文件夹

364e44e2a8c84337be75ccd7e7cfc982.png

新建mail.setting配置文件:

# 邮件服务器的SMTP地址
host = smtp.qq.com
# 邮件服务器的SMTP端口
port = 25
# 发件人(必须正确,否则发送失败)
from = xxxxxxxx@qq.com
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
user = xxxxxxxx
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
pass = xxxxxxxxxx
# SMTP超时时长,单位毫秒,缺省值不超时
timeout = 0
# Socket连接超时值,单位毫秒,缺省值不超时
connectionTimeout = 0

4:登录发送验证码(示例)

发送验证码接口:

@ApiOperation(value = "发送邮箱验证码")
    @PostMapping("sendEmailCode")
    public Result sendVerificationCode(@RequestBody(required = true) @Validated User user) throws MessagingException {
        String email = user.getEmail();
        String jsonStr = email;
        String emailCode = redisTemplate.opsForValue().get(jsonStr);
        if (!StringUtils.isEmpty(emailCode)) {
            return Result.ok(emailCode);
        }
        // 生成6位随机数字验证码
        String code = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
        //放到redis中规定时间内有效
        redisTemplate.opsForValue().set(jsonStr,code,1, TimeUnit.MINUTES);
        String theme = "你的验证码信息如下:";
        MailUtil.send(jsonStr,theme , "你的验证码如下:"+code+",该验证码主要是用户登录小夏后台管理系统," +
                "请尽快输入,你的验证码将于1分钟之后失效啦! 千万不要告诉别人哦!", false);
        String emailCode2 = redisTemplate.opsForValue().get(jsonStr);
        log.warn("{}",emailCode2);
        return Result.ok(code);
    }

登录接口:

@ApiOperation("手机验证码登录接口")
   @PostMapping("/emailCode")
   public Result emailCodeLogin(@RequestBody @Validated User user) throws Throwable {
      String email = user.getEmail();
      if (StrUtil.isEmpty(email)){
         throw new Exception("邮箱错误!");
      }
      log.info("当前获取的邮箱为:{}",email);
      //从redis中获取手机验证码
      String emailCode = redisTemplate.opsForValue().get(email);
      if (StringUtils.isEmpty(emailCode)) {
         return Result.fail("邮箱验证码有误");
      }
      if (!emailCode.equals(String.valueOf(user.getCode()))) {
         return Result.fail("邮箱验证码有误");
      }
      return Result.ok("登录成功");
   }

实验结果:

573b58ea8ee840e3b2fcebcd79a98d14.png




相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
16小时前
|
缓存 前端开发 Java
【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能
【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能
42 1
|
7月前
|
小程序 Java API
【Java】Spring boot快速上手(三)前后端分离实现小程序登录(接口篇)
【Java】Spring boot快速上手(三)前后端分离实现小程序登录(接口篇)
128 0
|
17小时前
|
前端开发 安全 Java
SpringBoot 实现登录验证码(附集成SpringSecurity)
SpringBoot 实现登录验证码(附集成SpringSecurity)
|
16小时前
|
Java 测试技术 数据库
基于SpringBoot+HTML实现登录注册功能模块
基于SpringBoot+HTML实现登录注册功能模块
|
16小时前
|
前端开发 Java
基于SpringBoot实现登录注册
使用SpringBoot实现的登录注册功能,前端负责获取用户信息并发送至后端,后端接收到数据后进行持久化处理。
7 0
|
17小时前
|
前端开发 Java 数据库连接
【Java实战篇】SpringBoot+MyBatis快速实现登录注册
【1月更文挑战第19天】【Java实战篇】SpringBoot+MyBatis快速实现登录注册
|
16小时前
|
前端开发 JavaScript Java
springboot 集成easy-captcha实现图像验证码显示和登录
springboot 集成easy-captcha实现图像验证码显示和登录
164 0
|
16小时前
|
存储 NoSQL 前端开发
【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题
【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题
|
16小时前
|
算法 前端开发 JavaScript
SpringBoot+随机盐值+双重MD5实现加密登录
SpringBoot+随机盐值+双重MD5实现加密登录
262 1
|
16小时前
|
缓存 前端开发 Java
spring boot3登录开发-3(账密登录逻辑实现)
spring boot3登录开发-3(账密登录逻辑实现)
57 1