如何使用Java redis实现发送手机验证码功能
时间:2020-11-20 17:33:28|栏目:JAVA代码|点击: 次
要求:
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次
代码如下
import redis.clients.jedis.Jedis;
import java.util.Random;
public class ValidationTest {
public static void main(String[] args) {
//getValidation("15005076571");
//checkValidation("769897","15005076571");
}
static void getValidation(String tel) {
//主机、端口
Jedis jedis = new Jedis("myhost", 6379);
//密码
jedis.auth("mypassword");
try {
//获取电话号码
String phoneNo = tel;
//本人用1库进行测试
jedis.select(1);
String countKey = phoneNo + ":count";
String codeKey = phoneNo + ":code";
//获取指定的电话号码发送的验证码次数
String cnt = jedis.get(countKey);
//对次数进行判断
if (cnt == null) {
//没有发送过验证码
jedis.setex(countKey, 60 * 60 * 24, "1");
//发送验证码,假设生成的验证码
StringBuffer code = new StringBuffer();
for (int i = 0; i < 6; i++) {
code.append(new Random().nextInt(10));
}
System.out.println("code:" + code);
//缓存中添加验证码
jedis.setex(codeKey, 60 * 2, code.toString());
} else {
if (Integer.parseInt(cnt) < 3) {
//发送验证码,假设生成的验证码
StringBuffer code = new StringBuffer();
for (int i = 0; i < 6; i++) {
code.append(new Random().nextInt(10));
}
System.out.println("code:" + code);
//缓存中添加验证码
jedis.setex(codeKey, 60 * 2, code.toString());
//递增手机发送数量
jedis.incr(countKey);
} else {
//返回超出3次,禁止发送
System.out.println("超出3次,禁止发送");
}
}
} catch (Exception e) {
//这边其实是需要回滚下redis
e.printStackTrace();
} finally {
//关闭redis
if (jedis != null) {
jedis.close();
}
}
}
static void checkValidation(String code, String tel) {
Jedis jedis = null;
try {
jedis = new Jedis("myhost", 6379);
//密码
jedis.auth("mypassword");
jedis.select(1);
String codeKey = tel + ":code";
String validation = jedis.get(codeKey);
if (validation == null) {
System.out.println("验证码未发送或者失效");
} else {
if (validation.equals(code)) {
System.out.println("验证成功");
} else {
System.out.println("验证失败");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
}
}
上一篇:Java多态的使用注意事项
栏 目:JAVA代码
本文标题:如何使用Java redis实现发送手机验证码功能
本文地址:http://www.codeinn.net/misctech/24377.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




