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

简介: 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




目录
相关文章
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
1322 0
|
存储 Java 数据库
Spring Boot 注册登录系统:问题总结与优化实践
在Spring Boot开发中,注册登录模块常面临数据库设计、密码加密、权限配置及用户体验等问题。本文以便利店销售系统为例,详细解析四大类问题:数据库字段约束(如默认值缺失)、密码加密(明文存储风险)、Spring Security配置(路径权限不当)以及表单交互(数据丢失与提示不足)。通过优化数据库结构、引入BCrypt加密、完善安全配置和改进用户交互,提供了一套全面的解决方案,助力开发者构建更 robust 的系统。
600 0
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
5405 5
|
安全 Java 数据安全/隐私保护
如何使用Spring Boot进行表单登录身份验证:从基础到实践
如何使用Spring Boot进行表单登录身份验证:从基础到实践
673 5
|
SQL 前端开发 NoSQL
SpringBoot+Vue 实现图片验证码功能需求
这篇文章介绍了如何在SpringBoot+Vue项目中实现图片验证码功能,包括后端生成与校验验证码的方法以及前端展示验证码的实现步骤。
SpringBoot+Vue 实现图片验证码功能需求
|
资源调度 JavaScript API
nest.js + sms 实现短信验证码登录
本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
nest.js + sms 实现短信验证码登录
|
Java API Spring
springBoot:注解&封装类&异常类&登录实现类 (八)
本文介绍了Spring Boot项目中的一些关键代码片段,包括使用`@PathVariable`绑定路径参数、创建封装类Result和异常处理类GlobalException、定义常量接口Constants、自定义异常ServiceException以及实现用户登录功能。通过这些代码,展示了如何构建RESTful API,处理请求参数,统一返回结果格式,以及全局异常处理等核心功能。
308 1
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
283 2
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
808 2