springboot网站开发,使用redis配合验证手机短信验证码是否有效
springboot网站开发,使用redis配合验证手机短信验证码是否有效!实际业务开发中,经常遇到手机注册的情况,少不了需要验证客户提交过来的短信验证码信息,是否正确。下面是一个简单的案例代码。
package com.blog.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.time.LocalDate;
import java.util.concurrent.TimeUnit;
/**
* 验证手机注册时的短信验证码信息是否有效,默认有效期是5分钟。
*/
public class VerificationCaptcha {
private static Logger alogger = LoggerFactory.getLogger("xx_xunwu");
@Resource
private RedisTemplate<String, Object> redisTemplate;
/**
* 验证用户输入的短信验证码是否有效
* 每一条验证码,都肯定和某个手机号是绑定的,所以验证也需要组合起来。
* @return
*/
public boolean VerificationCaptchaForRegisterByPhone(String phone,String captcha) {
try {
// 2.captcha,今天的日期作为prefix
String key = "rate:limit:registerbyphone:"+ phone +":"+ captcha;
// 3.检查用户输入的验证码是否存在redis中。
ValueOperations<String, Object> opsForValue = redisTemplate.opsForValue();
//查询redis内是否已经存在当前captcha的信息
Integer count = (Integer) opsForValue.get(key);
// 4.如何查询不到,说明验证码是无效的,直接返回false;
if (count == null || count <=0) {
return false;
}
} catch (Exception e) {
e.printStackTrace();
alogger.info("验证手机短信验证码是否有效时遇到故障:"+e.getMessage());
}
return true;
}
}
2:设计思路是:每一条短信验证码,肯定是会和某个手机号绑定组合的。所以,我们在策划这个方法的时候,加入了2个参数,一个是手机号,一个是短信验证码。
使用这2者组合的信息,作为key来完成验证有效性。
3:还有一个业务接口,会在用户提交申请短信验证码的时候,就已经提前使用phone+captcha组合的key存入了redis中,并且设置好了过期节点是5分钟之后。
4:到了这一步,就是验证用户输入的提交到后台控制器方法内的有效性了。
所以我们直接查询即可,如果查询到了,就说明是输入的正确。查询不到,说明输入的错误。
上一篇: 《Web 应用项目开
下一篇: Vue2 美食网站开