短信发送验证码,每天只限三次
package com.linfenpeng.jedis.Jedis;import redis.clients.jedis.Jedis;import java.util.Random;/*** @Author linfenpeng* @Description //TODO $* @Date $ $* @Param $* @return $**/
public class PhoneCode {public static void main(String[] args) {//模拟验证码发送verifyCode("13417652100");//getRedisCode("13417652100","455775");}//1.生成6位数数字验证码public static String getCode(){Random random = new Random();String code = "";for (int i = 0; i < 6; i++) {int rand = random.nextInt(10);code += rand;}return code;}//2.每个手机每天只能发送三次,验证码放到redis中,设置过期时间public static void verifyCode(String phone){Jedis jedis = new Jedis("127.0.0.1",6379);//拼接key//手机发送次数keyString countKey = "verifyCode"+phone+":count";//验证码keyString codeKey = "verifyCode"+phone+":code";//每个手机每天只能发送三次String count = jedis.get(countKey);if (count == null){//没有发送次数,第一次发送//设置发送次数是1jedis.setex(countKey,24*60*60,"1");}else if (Integer.parseInt(count) <= 2){//发送次数+1jedis.incr(countKey);}else if (Integer.parseInt(count) > 2){//发送三次,不能再发送System.out.println("今天发送次数已经超过三次!");jedis.close();return;}//发送的验证码放到reidsString vcode = getCode();jedis.setex(codeKey,120,vcode);jedis.close();}//3.验证码校验public static void getRedisCode(String phone,String code){Jedis jedis = new Jedis("127.0.0.1",6379);//验证码keyString codeKey = "verifyCode"+phone+":code";String redisCode = jedis.get(codeKey);if (redisCode.equals(code)){System.out.println("成功!");}else {System.out.println("失败!");}jedis.close();}}
Springboot 整合redis、config 配置
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.hash.ObjectHashMapper;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;import java.time.Duration;/*** @Author linfenpeng* @Description reids 配置* @Date $ $* @Param $* @return $**/@EnableCaching
@Configuration
public class RedisConfig extends CachingConfigurerSupport {@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.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;}}
短信发送验证码,每天只限三次相关推荐
- 阿里云短信服务——短信发送验证码
引言 短信服务现在在很多地方都用的到,我们最多接触到的可能就是验证码的发送了:现在很多大厂都提供由短信服务对应的api,直接调用就可以轻松实现短信发送:下面我以阿里云为例,演示一下如何短信发送验证码: ...
- jeecg 手机注册 阿里云短信API 【 阿里云短信发送验证码 平台配置和项目中使用】
文章目录 jeecg 项目效果展示 短息通知页面入口 代码中调用短信api 配置和代码 API中的重要参数配置项: 阿里控制台注册 注册签名 注册短信模板 阿里云短信发送验证码配置和项目使用 je ...
- 邮箱发送验证码和短信发送验证码的学习笔记
邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...
- PHP 手机短信发送验证码
点击链接加入群[php/web 学习课堂]:https://jq.qq.com/?_wv=1027&k=5645xiw 欢迎大家加入,一起讨论学习 本篇设计的知识点有点多,我会分类将,同学们可 ...
- thinkphp5+阿里短信发送验证码
一.申请阿里短信接口,开通服务,申请AccessKey ID和Access Key Secret 二.申请短信发送模板 三.在thinkphp5中的config文件中添加一下配置 //短信配置'SMS ...
- 短信发送验证码实现验证
写在前面 你们好,我是小庄.很高兴能和你们一起学习短信发送功能.如果您对Java感兴趣的话可关注我的动态. 写博文是一种习惯,在这过程中能够梳理和巩固知识点. 实现思路:前台将手机号码发送到后 ...
- laravel中实现短信发送验证码
前段时间想实现一个短信验证码的功能,但是卡了很长时间. 首先我用的是阿里云的短信服务业务,其首次接入流程如下: 在阿里云上开通短信服务后需要做的: 1,申请签名 2,申请模板 3,创建Acces ...
- 阿里云短信发送验证码使用记录
官网:https://www.aliyun.com/product/sms 0.首先需要注册阿里云账号,可以直接用支付宝登陆. 1.登陆阿里云短信管理控制台,选择快速学习,使用测试短信发送 2.测试手 ...
- php短信验证案例,PHP项目之容联云短信发送验证码
一.简介 短信验证码功能,在一些网站中,都有普遍使用,容联云是国内领先的云通信平台,很多网站都在使用,本专题讲解一下,使用容联云平台的短信验证码功能. 二.特性 5秒必达.资费低.接入快,流程如下: ...
- springboot实现短信发送验证码及消息队列发送注册成功短信
需要源码小伙伴可以到微信小程序:"MINIIT资源库"获取,作者承诺免费 PS:在编写功能之前,需要得到阿里云短信服务API: 使用消息队列(mq)可以将主业务和副业务分离,主业务 ...
最新文章
- telegraf监控mysql数据库_部署Telegraf+Influxdb+Grafana 架构来监控 MySQL
- java.lang.IllegalStateException: Not connected to server
- 牛客 XOR和(找规律)
- 中国专业开发者最多,最受 Web 服务青睐,Java 8 为最受欢迎版本 | 2020 年 Java 开发现状大调查...
- SVM入门(四)线性分类器的求解——问题的描述Part1
- lingo求优化模型
- win10桌面右键一直转圈_不多占1M内存的win10桌面美化
- 插入网线后以太网显示ip4连接无网络访问权限
- 【四足机器人那些事】足端轨迹规划(一)
- c语言程序设计教程2014版,C语言程序设计案例教程(第3版)
- word打开老是配置进度_打开word2007时总是出现配置进度,怎么解决?
- 用LangChain构建大语言模型应用
- 飞腾cpu服务器浪潮信息,浪潮发布国产飞腾CPU服务器
- RC滤波 电阻电容的损耗计算方法
- JMeter - REST API测试 - 完整的数据驱动方法(翻译)
- ChatGPT替代品使用指南
- keil 生成三角波dac0832_弹性波,时域显式接口简介
- C++中virtual的三种用法
- 高度塌陷问题及解决方法
- 半路出家学php可以吗,PHP半路出家(3)