当前位置: 首页 > news >正文

基于SpringBoot框架发生验证码

 一、SpringBoot集成邮箱验证码

二、SpringBoot集成阿里云短信服务(手机验证码)

1.配置类

2.那么如何获取配置信息呢?


 一、SpringBoot集成邮箱验证码

首先我们来讲讲如何发生邮箱验证码,使用邮箱验证码的好处是不需要任何成本。

导入依赖

	<!--引入发送邮件的坐标-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
			<version>2.7.13</version> <!-- 或者最新版本 -->
		</dependency>

		<!--引入redis坐标-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
spring:
  mail:
    host: smtp.qq.com
    port: 587 #端口
    username: ${email.username} #邮箱
    password: ${email.password} #授权码
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
          ssl:
            enable: false

进入QQ邮箱,点击设置->账号->开启服务->生成授权码 

定义MVC接口 

    @PostMapping("/sendCode")
    @ApiOperation("发送邮箱验证码")
    public Result sendCode(@RequestParam("email") String email){
        userService.sendCode(email);

        return Result.success();
    }

处理发送逻辑 

 @Transactional
    @Override
    public void sendCode(String email) {
        if(!StringUtils.hasText(email)) throw new BaseException("邮箱账号不能为空");
        //判断邮箱格式
        String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9_]+\\.[a-z]{3,5}";
        if (!email.matches(regex)) {
            throw new BaseException("邮箱格式不正确");
        }
        String randomCode = getRandomCode();
        //发送验证码
        sendEmail(email,randomCode);
        log.info("用户收到的验证码是:{}",randomCode);
        //如果发送成功--->将验证码保存至redis中
        redisTemplate.opsForValue().set(EMAIL + email,randomCode,3 , TimeUnit.MINUTES);
    }

    private String getRandomCode(){
        //随机生成一串6位验证码
        // 生成6位数的随机验证码
        String code = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
        return code;
    }
    //使用s

文章转载自:
http://cachinnatoria.hdqtgc.cn
http://brainpower.hdqtgc.cn
http://cabochon.hdqtgc.cn
http://ah.hdqtgc.cn
http://bitumastic.hdqtgc.cn
http://aestheticism.hdqtgc.cn
http://beld.hdqtgc.cn
http://abiosis.hdqtgc.cn
http://candlewick.hdqtgc.cn
http://aerophone.hdqtgc.cn
http://chewie.hdqtgc.cn
http://chitter.hdqtgc.cn
http://anovulation.hdqtgc.cn
http://bon.hdqtgc.cn
http://brainchild.hdqtgc.cn
http://aden.hdqtgc.cn
http://amontillado.hdqtgc.cn
http://caseload.hdqtgc.cn
http://bedarken.hdqtgc.cn
http://aconitic.hdqtgc.cn
http://auric.hdqtgc.cn
http://chinagraph.hdqtgc.cn
http://amyloid.hdqtgc.cn
http://announcing.hdqtgc.cn
http://blowby.hdqtgc.cn
http://autosuggestion.hdqtgc.cn
http://anticonvulsant.hdqtgc.cn
http://camera.hdqtgc.cn
http://bigeminy.hdqtgc.cn
http://bierstube.hdqtgc.cn
http://www.dtcms.com/a/111379.html

相关文章:

  • 【Docker项目实战】使用Docker部署MediaCMS内容管理系统
  • 脑影像分析软件推荐 | BCT(Brain Connectivity Toolbox)
  • c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第四式】自定义类型详解(结构体、枚举、联合)
  • Windows 11 听的见人声,但是听不见背景音乐或者听不见轻音乐等,可以这样设置
  • 【橘子大模型】Runnable和Chain以及串行和并行
  • STM32 HAL库 CANFD配置工具
  • 小程序API —— 58 自定义组件 - 创建 - 注册 - 使用组件
  • CExercise_04_1运算符_6 (扩展) 找出数组中只出现一次的唯二元素
  • 社会视频汇聚:构筑城市安全防线的智慧之眼
  • VirtualBox 配置双网卡(NAT + 桥接)详细步骤
  • 《微服务概念进阶》精简版
  • 新浪财经股票每天10点自动爬取
  • 免费送源码:Java+SSM+Android Studio 基于Android Studio游戏搜索app的设计与实现 计算机毕业设计原创定制
  • Springboot + Vue + WebSocket + Notification实现消息推送功能
  • 接口自动化学习四:全量字段校验
  • L1-100 四项全能(测试点1)
  • 计算机网络知识点汇总与复习——(三)数据链路层
  • 在VMware下Hadoop分布式集群环境的配置--基于Yarn模式的一个Master节点、两个Slaver(Worker)节点的配置
  • Leetcode 33 -- 二分查找 | 归约思想
  • 【YOLO系列(V5-V12)通用数据集-交通红黄绿灯检测数据集】
  • SpringBoot集成swagger和jwt
  • Flask学习笔记 - 模板渲染
  • 深入探究 Hive 中的 MAP 类型:特点、创建与应用
  • 【Linux系统编程】进程概念,进程状态
  • 第三期:深入理解 Spring Web MVC [特殊字符](数据传参+ 特殊字符处理 + 编码问题解析)
  • 游戏编程模式学习(编程质量提升之路)
  • 25.4.4错题分析
  • Linux: network: 两台直连的主机业务不通
  • 【移动编程技术】作业1 中国现代信息科技发展史、Android 系统概述与程序结构 作业解析
  • Leetcode——150. 逆波兰表达式求值