目录
2.两分钟内有效,把验证码放入Redis里面,设置过期时间为120秒
3.判断验证码是否符合一致,从Redis获取验证码和输入的验证码进行比较
4.每个手机每天只能发送3次验证码, incr每次发送之后+1,大于2的时候提交不能发送。
本文是本人笔记,如果说是在掘金上看到的话没错,还是本人程程呀 的个人主页 - 动态 - 掘金只有这一个。如果有哪里不对的话欢迎各位大佬指出问题,本人是一个小白。
上一篇文章链接为:Redis发布订阅和数据类型_程程呀是小白的博客-CSDN博客 ,本篇是连接上一篇Redis发布订阅和数据类型_程程呀是小白的博客-CSDN博客。
如果是springboot的话请看springboot创建项目_程程呀是小白的博客-CSDN博客_springboot创建项目 ,这个是从头开始的还没有学完springboot,一起学习呀!!!!
public static void main(String[] args) {
String code=getCode();
System.out.println(code);
}
//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){
//连接Redis
Jedis jedis=new Jedis("192.168.1.6",6379);
//拼接key
//手机发送次数
String countKey="VerifyCode"+phone+":count";
//验证码key
String codeKey="VerifyCode"+phone+":code";
//每个手机每天只能发送三次
String count=jedis.get(countKey);
if (count == null){
//没有发送次数,第一次发送
//设置发送次数是1
jedis.setex(countKey,24*60*60,"1");
}else if(Integer.parseInt(count)<=2){
//发送次数加1
jedis.incr(countKey);
}else if (Integer.parseInt(count)>2){
//发送三次,不能再发送
System.out.println("今日发送次数已经超过三次了哦!!!!");
jedis.close();
return;
}
//发送验证码放到Redis
String vcode=getCode();
jedis.setex(codeKey,120,vcode);
jedis.close();
}
//3 验证码校验
public static void getRedisCode(String phone,String code){
//从Redis获取验证码
Jedis jedis=new Jedis("192.168.1.6",6379);
//验证码key
String codekey="VerifyCode"+phone+":code";
String reidsCode=jedis.get(codekey);
//判断
if (reidsCode.equals(code)){
System.out.println("成功");
}else {
System.out.println("失败");
}jedis.close();
}
public static void main(String[] args) {
//模拟验证码发送
verifyCode("13656458936");
//getRedisCode("13656458936","260372");
}
今日发送次数已经超过三次了哦!!!!
本文是本人笔记,如果说是在掘金上看到的话没错,还是本人程程呀 的个人主页 - 动态 - 掘金只有这一个。如果有哪里不对的话欢迎各位大佬指出问题,本人是一个小白。
上一篇文章链接为:Redis发布订阅和数据类型_程程呀是小白的博客-CSDN博客 ,本篇是连接上一篇Redis发布订阅和数据类型_程程呀是小白的博客-CSDN博客。
如果是springboot的话请看springboot创建项目_程程呀是小白的博客-CSDN博客_springboot创建项目 ,这个是从头开始的还没有学完springboot,一起学习呀!!!!