通常我们注册或者登录都可以通过手机号,邮箱进行验证码的验证登录,本篇文章基于QQ邮箱和Redis模拟简单的验证码验证,具体业务可以根据需求进行升级。通过Random随机生成6位数字,设置过期时间为60s,通过QQ邮件进行发送验证码内容。使用SpringBoot作为脚手架搭建简单模拟环境,Redis运行在虚拟机上,QQ邮箱自行申请POP3/SMTP服务。

1:Redis配置

1.1:在Linux上开启Redis服务

[root@LKCentos01 ~]# redis-server /etc/redis.conf
[root@LKCentos01 ~]# redis-cli
127.0.0.1:6379> quit

1.2:查看Linux的IP地址

1.3:创建SpringBoot工程配置Redis

1.3.1:引入依赖

<!--SpringBoot整合redis--><!-- redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- spring2.X集成redis所需common-pool2--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.6.0</version></dependency>

1.3.2:application.yaml配置

新建application.yaml配置Redis

spring:redis:#Redis服务器地址  此处的host为通过ifconfig命令获取的linux的IP地址host: 192.168.111.128  #Redis服务器连接端口port: 6379#Redis数据库索引(默认为0)database: 0#Redis连接超时时间(毫秒)timeout: 1800000#配置Redis连接池lettuce:pool:#Redis连接池的最大连接数(负数表示无限制)max-active: 20#Redis最大阻塞等待时间(负数表示没有限制)max-wait: -1#Redis连接池中的最大空闲连接数max-idle: 5#Redis连接池中的最小空闲连接数min-idle: 0

1.3.3:Redis配置类

新建RedisConfig配置Redis

@EnableCaching //开启redis操作
@Configuration
public class RedisConfig extends CachingConfigurerSupport {//创建RedisTemplate类@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();RedisSerializer<String> redisSerializer = new StringRedisSerializer();Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);template.setConnectionFactory(factory);//key序列化方式template.setKeySerializer(redisSerializer);//value序列化template.setValueSerializer(jackson2JsonRedisSerializer);//value hashmap序列化template.setHashValueSerializer(jackson2JsonRedisSerializer);return template;}//创建缓存管理@Beanpublic CacheManager cacheManager(RedisConnectionFactory factory) {RedisSerializer<String> redisSerializer = new StringRedisSerializer();Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);//解决查询缓存转换异常的问题ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);// 配置序列化(解决乱码的问题),过期时间600秒RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)).serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).disableCachingNullValues();RedisCacheManager cacheManager = RedisCacheManager.builder(factory).cacheDefaults(config).build();return cacheManager;}}

2:申请QQ邮箱服务

3:配置QQ邮箱

3.1:引入依赖

 <!--发送邮件服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

3.2:配置mail

spring:mail:username: #申请服务的邮箱,也就是发送邮件的邮箱password: #刚才申请服务产生的授权码host: smtp.qq.com  #默认default-encoding: UTF-8  #默认properties:  #默认mail:smtp:auth: truestarttls:enable: truerequired: true

4:实现

4.1:自动装配

 //自动装配RedisTemplate@Autowiredprivate RedisTemplate redisTemplate;//自动装配JavaMailSender@Autowiredprivate JavaMailSender mailSender;

4.2:生成验证码存入Redis

    //随机生成6位数字public String getCode(){Random random=new Random();StringBuilder stringBuilder=new StringBuilder();for(int i=0;i<6;i++){stringBuilder.append(random.nextInt(10));}//将随机得到的验证码存入redis中设置过期时间为60sredisTemplate.opsForValue().set("RedisCode", stringBuilder.toString(), 60, TimeUnit.SECONDS);return stringBuilder.toString();}

4.3:发送邮件

    //发送邮件@GetMapping("/email")public String sendEmail(){SimpleMailMessage massage=new SimpleMailMessage();massage.setFrom("发送邮箱");massage.setTo("收件邮箱");massage.setSubject("头信息");massage.setText(getCode());//发送内容为验证码mailSender.send(massage);return "index";}

4.4:测试

发送邮件成功:

Redis存储成功:

5:参考

使用Springboot发送邮件(QQ邮箱)整合笔记

使用Redis,QQ邮箱模拟验证码验证相关推荐

  1. java发送qq邮箱验证_JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)

    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...

  2. react-hooks + node 使用qq邮箱发送验证码,验证修改密码

    在平常,我们写登录注册react项目时,我们可能会考虑使用QQ邮箱发送验证码登录注册,或者使用QQ邮箱验证来修改密码,下面,我们就来使用QQ邮箱来简单发送个邮件. 1.当我们想在react项目中使用Q ...

  3. SpringBoot通过qq邮箱发送验证码

    SpringBoot通过qq邮箱发送验证码 1.开启qq授权码 2.编写配置文件 spring:#邮箱验证mail:##163 smtp.163.com(反垃圾系统发送不了了)##qq smtp.qq ...

  4. 最简单Java实现QQ邮箱发送验证码

    Java使用QQ邮箱发送验证码 1. 开启服务,获取授权码 需登录自己的QQ邮箱,打开 POP3/SMTP 服务,并获取授权码. 具体操作: 登录邮箱 邮箱首页 "设置" 选择 & ...

  5. 第十七周--关于qq邮箱接受验证码功能的实现

    qq邮箱接收验证码 第一步:pom.xml导入配置 <!--QQ邮箱验证码所需jar包--><dependency><groupId>javax.activatio ...

  6. Spring boot 使用QQ邮箱进行一个验证登入

    Spring boot 使用QQ邮箱进行一个验证登入 QQ邮箱开启权限 在QQ邮箱设置->账户里面,往下拉找到这个开启,手机号验证成功后会有一串英文字符串是待会儿要用到的密码. prom.xml ...

  7. Spring Boot 整合163或者qq邮箱发送验证码

    前记 最近做的项目中注册功能要用到验证码,本来想用阿里云的短信服务,但是有点小贵,就另辟捷径,选择了用邮箱来发送验证码.记录一下整合过程,也希望能帮助一些有需要的人. 正文 1.Spring Boot ...

  8. 实现会员注册功能时如何通过qq邮箱获取验证码,从而验证登录? 详细步骤

    文章目录 会员注册_邮箱验证码功能实现: 前端操作: 后端操作: SpringBoot集成邮件发送验证码: 1.导入发送邮件jar包 2.配置 3.Controller层处理 4.service层注入 ...

  9. 引入QQ邮箱发送验证码进行安全校验

    其他方案=>引入短信服务发送手机验证码进行安全校验 操作相对复杂且收费,详细教程可供参考选择 最近想给自己的项目在注册时加点安全校验,本想着使用短信验证码,奈何囊中羞涩只能退而求次改用QQ邮箱验 ...

  10. QQ邮箱发送验证码功能的实现

    1.打开QQ邮箱的xxx服务,记住授权码 2.引入依赖 <dependency>             <groupId>org.springframework.boot&l ...

最新文章

  1. Google App Engine for Java下的URL编码转换问题
  2. 训练NeRF只需5秒?!英伟达这项新技术给谷歌研究员整不会了 | 开源
  3. 提高网站访问速度的34条军规(2)
  4. python 检测exe是否未响应_第002篇:Python的安装
  5. 2020-07-01 CVPR2020 表示学习论文讨论(2) 笔记
  6. Asp.Net MVC 3【URLs, Routing,and Areas】续
  7. SpringMVC4返回json
  8. BeginnersBook Kotlin 教程
  9. JAVA netty 定时任务_Netty HashedWheelTimer 定时任务调用
  10. Python 实现数据结构中的单链表,循环单链表,双链表
  11. AI赋能,使用客服机器人改善客户服务的几种方法
  12. Scrapy爬虫案例-淘宝比价定向爬虫学习笔记
  13. Cannot find current proxy: Set ‘exposeProxy‘ property on Advised to ‘true‘ to make it available
  14. 高性能网络开发框架vpp,让你的技术提高一个level
  15. vue项目使用svg图片
  16. Android系列之Fragment(一)----Fragment加载到Activity当中
  17. 【数学建模和matlab】反思与总结(1)
  18. MyEclipse热部署----使用工具 JRebel
  19. 企业级区块链阶段性突破,新基建有了新“底座”
  20. 51Nod - 1298(点到线段的距离)

热门文章

  1. 批量重命名文件夹中的文件(python)
  2. 机械革命计算机配置,机械革命笔记本Bios设置方法
  3. (python)图像下采样(bicubic插值法)
  4. 图片模糊怎么变清晰?用嗨格式图片无损放大器
  5. 牛牛的汉诺塔(记忆化搜索)
  6. dedecms教程:织梦模板修改{dede:list}标签后,可支持权重排序、flag标签功能
  7. 不用花钱,让你百度网盘满速下载的神器!简单实用教程
  8. 超级右键-Mac右键扩展工具
  9. Java解压Zip 压缩包
  10. 【python】Python学到什么程度可以面试工作