当前位置:   article > 正文

Redis缓存验证码_redishelper.clearcurrentdatabase

redishelper.clearcurrentdatabase

通常项目中,在进行登录或者查看一些数据私密度高的数据的时候都需要去额外的校验一下

步骤

1.生成6位数随机验证码

2.将验证码和手机号存储在Redis缓存中

3.发送短信,用户接受短信,在指定时间填写正确验证码

4.接受前端传过来的验证码,取出Redis缓存中的验证码进行对比

5.根据对比结果,超时,填写错误,正确,返回不同的状态,校验通过则进行下一步,否则重新进行第一步

//设置验证码长度6位

private final static String EsConstants.RedisCode.CAPTCHA_LENGTH = "6";

//发送验证码,并将验证码,手机号存到Redis

@Override

public JSONObject textCaptcha(String phoneNum) {

JSONObject jsonObject = new JSONObject();

//生成验证码(设置长度为6)

StringBuilder textCode = new StringBuilder(EsConstants.RedisCode.CAPTCHA_LENGTH);

for (int i = 0; i < EsConstants.RedisCode.CAPTCHA_LENGTH; i++) {

//没循环一次,生成一个1到10的随机数,转成string,拼接到StringBuilder上面

String ch = new Random().nextInt(10) + "";

textCode.append(ch);

}

redisHelper.setCurrentDatabase(2);

//redis存值,将手机号,验证码存到Redis里面

//设置对应的key和value,验证码作为value存进去

redisHelper.strSet(EsConstants.RedisCode.HRECC_PREFIX +EsConstants.RedisCode.MODULE_PREFIX +

EsConstants.RedisCode.CAPTCHA + phoneNum,

textCode.toString(),

5 * 60L,

TimeUnit.SECONDS);

//存完值之后需要恢复默认redis库

redisHelper.clearCurrentDatabase();

Map paramMap = new HashMap();

paramMap.put("captcha", textCode);

//发送短信

JSONObject messageResult = hreccRemoteService.sendMessageTemplate(phoneNum, EsConstants.MessageTemplate.CAPTCHA, JSON.toJSONString(paramMap));

jsonObject.put("status", "success");

jsonObject.put("message", messageResult);

//返回短信结果

return jsonObject;

}

 

//接受验证码,从Redis里面取出验证码,手机号,与前端传进来的验证码

手机号相比较,校验是否正确

@Override

public JSONObject checkCaptcha(String phoneNum, String captcha) {

Assert.notNull(captcha, "短信验证码不能为空");

redisHelper.setCurrentDatabase(2);

//根据存Redis的参数,取出验证码

//根据存进去的key取出对应的value,也就是验证码

String redisStr = redisHelper.strGet(EsConstants.RedisCode.HRECC_PREFIX + EsConstants.RedisCode.MODULE_PREFIX +

EsConstants.RedisCode.CAPTCHA + phoneNum);

redisHelper.clearCurrentDatabase();

JSONObject jsonObject = new JSONObject();

//超时未填写,传进来是空的,报超时

if (redisStr == null) {

jsonObject.put("status", "fail");

jsonObject.put("message", "验证码超时,请重新发送");

} else if (redisStr.equals(captcha)) {//从Redis取出相等,校验通过

jsonObject.put("status", "success");

jsonObject.put("message", "验证成功");

} else {

jsonObject.put("status", "fail");

jsonObject.put("message", "验证码输入错误");

}

return jsonObject;

}

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/511114
推荐阅读
相关标签
  

闽ICP备14008679号