/** * 比较手机验证码 * * @param mobile * @param validCode * @return */ public boolean checkSMSValidationCode(String mobile, String validCode) { String redisKey = Constants.REDIS_KEY_PER_SMS_VALIDATION_PREFIX + mobile; if (redisEao.isKeyExist(redisKey)) { String vCode = redisEao.readFromString(redisKey); return vCode.equals(validCode); } return false; }
/** * 删除已经验证过的KEY * * @param mobile * @param id * @return */ public boolean delSMSValidationCode(String mobile, Integer id, String validCode) { String isSendKey = Constants.REDIS_KEY_PER_SMS_VALIDATION_IS_SEND_PREFIX + id; try { redisEao.del(isSendKey); redisEao.del(Constants.REDIS_KEY_PER_SMS_VALIDATION_PREFIX + validCode); return true; } catch (Exception e) { return false; } }
public Integer checkDynamicCode(String validCode) { if (!redisEao.isKeyExist(Constants.REDIS_KEY_PER_LOGIN_DYNAMIC_CODE_PREFIX + validCode)) { return 0; // Code在Redis中已过期 } else { Integer id = NumberUtils.toInt( redisEao.readFromString( Constants.REDIS_KEY_PER_LOGIN_DYNAMIC_CODE_PREFIX + validCode)); return id; } }
public Integer checkSMSValidationCode(String validCode) { if (!redisEao.isKeyExist(Constants.REDIS_KEY_PER_SMS_VALIDATION_PREFIX + validCode)) { return 0; // Code在Redis中已过期 } else { Integer id = NumberUtils.toInt( redisEao.readFromString(Constants.REDIS_KEY_PER_SMS_VALIDATION_PREFIX + validCode)); // 这里需要考虑是否要将这个redis key直接移除掉?还是等它自己的生存周期过期? return id; } }
/** * 登陆验证码校验 * * @param captchaCode * @return */ public boolean checkCaptchaCode(String captchaCode) { if (StringUtils.isNotBlank(captchaCode)) { String captchaKey = Constants.REDIS_KEY_CAPTCHA_PREFIX + StringUtils.lowerCase(captchaCode); boolean checkFlag = redisEao.isKeyExist(captchaKey); System.out.println(checkFlag + "---------"); if (checkFlag) { redisEao.del(captchaKey); return true; } } return false; }
/** * 生成手机验证码,用户还没有帐号 * * @param mobile 手机号 * @return */ public String buildSMSValidationCode(String mobile) { String redisKey = Constants.REDIS_KEY_PER_SMS_VALIDATION_PREFIX + mobile; if (redisEao.isKeyExist(redisKey)) { // 验证已经生成过了,在有此key的情况下不重新生成 return ""; } else { // 随机生成6位数字 String[] code = new String[6]; for (int i = 0; i < 6; i++) { code[i] = ObjectUtils.toString((int) (Math.random() * 10)); } String validCode = StringUtils.join(code); redisEao.writeToString(redisKey, validCode); redisEao.setKeyExpire(redisKey, Constants.REDIS_EXPIRE_TIME_PER_SMS_VALIDATION); return validCode; } }
/** * 删除已生成的验证码KEY * * @param key * @return */ public boolean delVcodeByRedisKey(String key) { try { redisEao.del(key); return true; } catch (Exception e) { return false; } }
/** * 生成邮件验证码,此验证码自带一定的时效性 对应id如果在一定时间内生成过验证码的,不重复生成第二次,而是直接返回空字符串 * * @param mail * @param id * @return */ public String buildMailValidationCode(String mail, Integer id) { String isSendKey = Constants.REDIS_KEY_PER_MAIL_VALIDATION_IS_SEND_PREFIX + id; if (redisEao.isKeyExist(isSendKey)) { // 验证已经生成过了,在有此key的情况下不重新生成 return ""; } else { String validCode = MD5Builder.md5( mail, ObjectUtils.toString(System.currentTimeMillis()), ObjectUtils.toString(id)); redisEao.writeToString( Constants.REDIS_KEY_PER_MAIL_VALIDATION_PREFIX + validCode, ObjectUtils.toString(id, "")); redisEao.setKeyExpire( Constants.REDIS_KEY_PER_MAIL_VALIDATION_PREFIX + validCode, Constants.REDIS_EXPIRE_TIME_PER_MAIL_VALIDATION); redisEao.writeToString(isSendKey, validCode); redisEao.setKeyExpire(isSendKey, Constants.REDIS_EXPIRE_TIME_PER_MAIL_VALIDATION); return validCode; } }
/** * 根据uuid及用户ID生成token * * @param uuid * @param userId * @return */ public String buildMobileToken(String uuid, Integer userId) { if (StringUtils.isBlank(uuid) || userId <= 0) { return ""; // 没有传入uuid或userId } else { // 保存token信息到Redis // 保存的格式为string // 值内容应为 【 uuid,userid 】 // 生存期为30天 String token = MD5Builder.md5(uuid + userId); redisEao.writeToString( Constants.REDIS_KEY_MOBILE_API_TOKEN_PREFIX + token, uuid + "," + userId); redisEao.setKeyExpire( Constants.REDIS_KEY_MOBILE_API_TOKEN_PREFIX + token, Constants.REDIS_EXPIRE_TIME_MOBILE_API_TOKEN); return token; } }
/** * 生成动态码,此动态码自带一定的时效性 对应id如果在一定时间内生成过动态码的,不重复生成第二次,而是直接返回空字符串 * * @param id * @return */ public String buildDynamicCode(Integer id) { String isSendKey = Constants.REDIS_KEY_PER_LOGIN_DYNAMIC_CODE_VALIDATION_IS_SEND_PREFIX + id; if (redisEao.isKeyExist(isSendKey)) { // 动态码已经生成过了,在有此key的情况下不重新生成 return ""; } else { // 随机生成6位数字 String[] code = new String[6]; for (int i = 0; i < 6; i++) { code[i] = ObjectUtils.toString((int) (Math.random() * 10)); } String validCode = StringUtils.join(code); redisEao.writeToString( Constants.REDIS_KEY_PER_LOGIN_DYNAMIC_CODE_PREFIX + validCode, ObjectUtils.toString(id, "")); redisEao.setKeyExpire( Constants.REDIS_KEY_PER_LOGIN_DYNAMIC_CODE_PREFIX + validCode, Constants.REDIS_EXPIRE_TIME_PER_LOGIN_DYNAMIC_CODE); redisEao.writeToString(isSendKey, validCode); redisEao.setKeyExpire(isSendKey, Constants.REDIS_EXPIRE_TIME_PER_LOGIN_DYNAMIC_CODE); return validCode; } }