这里主要分析jeecg 2.4.6如何校验登录
流程
生成验证码
前端缓存发送生成验证码请求时时间戳currdatetime
后端缓存
后端将验证码小写后+时间戳 md5后作为key,小写验证码作为value存redis,缓存时长60秒
1 2 3 4 5 6 7 8
|
String code = RandomUtil.randomString(BASE_CHECK_CODES,4); String lowerCaseCode = code.toLowerCase();
String realKey = MD5Util.MD5Encode(lowerCaseCode+key, "utf-8");
redisUtil.set(realKey, lowerCaseCode, 60);
|
登录校验
登录地址:
http://localhost:8080/jeecg-boot/sys/login
请求参数:
1 2 3 4 5 6 7 8 9
| { "username":"admin", "password":"123456", "captcha":"UKwW", "checkKey":1630844796721, "remember_me":true }
|
输入的验证码+时间戳 md5后作为key,从redis里面获取验证码,验证码不为空且输入的验证码与redis里面获取的验证码一致,即为验证通过
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
String captcha = sysLoginModel.getCaptcha(); if(captcha==null){ result.error500("验证码无效"); return result; } String lowerCaseCaptcha = captcha.toLowerCase();
String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), "utf-8");
Object checkCode = redisUtil.get(realKey);
if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) { result.error500("验证码错误"); return result; }
|