如何使用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(); } } }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章: