如何使用Java redis实现发送手机验证码功能
要求:
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 redis实现发送手机验证码功能 的全部内容, 来源链接: utcz.com/z/317967.html