Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/verification/VerificationCodeManagerImpl.java =================================================================== diff -u -r40894 -r40901 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/verification/VerificationCodeManagerImpl.java (.../VerificationCodeManagerImpl.java) (revision 40894) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/verification/VerificationCodeManagerImpl.java (.../VerificationCodeManagerImpl.java) (revision 40901) @@ -220,6 +220,11 @@ if(StringUtils.isBlank(smsMumber)){ throw new SystemException("未绑定手机号码,请补充或联系管理员。"); } + Pattern p = Pattern.compile("^(1)[0-9]{10}$"); + Matcher m = p.matcher(loginUser.getSmsMumber()); + if(!m.matches()){ + throw new SystemException("该用户绑定手机号无效,请联系管理员更改手机号!"); + } //若同时启用了配置项“loginSecurirtyConfig”时,验证码输入后的验证失败次数也计算为登录失败的次数。 loginSecurirtyConfig(loginUser, nowDateTime); //查询最后发送的验证码,用于校验用户是否频繁发送短信;同一个用户每次点击发送获取验证码后,有一分钟的冷却时间; @@ -236,7 +241,7 @@ String dateAreaSql = dateQueryAdapter.dateAreaSql("createDateTime", DateTools.getFormatDateStr(DateTools.startOfDate(nowDateTime), DateTools.COMMON_DATE_HMS), DateTools.getFormatDateStr(nowDateTime, DateTools.COMMON_DATE_HMS)); String countSql = String.format("select count(1) from %s where %s", SmsVerificationCode.class.getSimpleName(), dateAreaSql); if(objectDao.countBySql(countSql) >= SmsVerificationCode.MAX_SMS_AMOUNT_PER_DAY){ - throw new RuntimeException(String.format("用户【%s】短信发送频繁,请稍后再试!", loginName)); + throw new SystemException("验证码获取达到上限,请联系管理员处理。"); } //生成随机验证码 Integer num = (int)((Math.random()*9+1)*1000);