700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java手机号校验 短信验证码 验证码工具类

Java手机号校验 短信验证码 验证码工具类

时间:2022-07-23 03:20:06

相关推荐

Java手机号校验 短信验证码 验证码工具类

1、手机号校验、生成短信验证码缓存redis、验证短信验证码

import mon.constant.OpsConstants;import mon.entity.ValidateData;import com.ruoyi.framework.redis.CacheTool;import net.dreamlu.mica.core.utils.StringPool;import net.dreamlu.mica.redis.cache.CacheKey;import org.springframework.util.ObjectUtils;import java.time.Duration;public class SmsUtils {public static final String PHONE_RULES = "^(\\+|00){0,2}(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\\d{1,14}$";/*** 校验手机号** @param phoneNum* @return*/public static boolean checkPhoneNum(String phoneNum) {return !ObjectUtils.isEmpty(phoneNum) && phoneNum.matches(PHONE_RULES) && checkMobileNum(phoneNum);}/*** 校验手机号** @param mobileNum* @return*/public static boolean checkMobileNum(String mobileNum) {if (mobileNum.startsWith("1") && mobileNum.length() == 11) {return true;} else {return false;}}/*** 短信验证码缓存key** @param uuid 手机号* @return*/public static CacheKey getSmsKey(String uuid) {//格式key:模板标识:手机号return new CacheKey(OpsConstants.ALISMS_KEY + StringPool.COLON + uuid, Duration.ofMinutes(5));}/*** 生成短信验证码** @param uuid 手机号* @return*/public static ValidateData generateValidateData(String uuid) {ValidateData validateData = new ValidateData();String smsCode = CacheTool.getSmsCode(uuid);validateData.setUuid(uuid);validateData.setCode(smsCode);return validateData;}/*** 验证短信验证码** @param uuid 手机号* @param code 验证码* @return*/public static boolean validate(String uuid, String code) {return code.equals(CacheTool.getMicaRedisCache().get(getSmsKey(uuid)));}}

import lombok.Data;@Datapublic class ValidateData {/*** 手机号/唯一标识*/private String uuid;/*** 验证码*/private String code;}

import com.ruoyi.framework.utils.SmsUtils;import net.dreamlu.mica.core.spring.SpringContextUtil;import net.dreamlu.mica.core.utils.$;import net.dreamlu.mica.core.utils.RandomType;import net.dreamlu.mica.redis.cache.CacheKey;import net.dreamlu.mica.redis.cache.MicaRedisCache;/*** 缓存工具栏*/public class CacheTool {private static MicaRedisCache micaRedisCache;public static MicaRedisCache getMicaRedisCache() {if (micaRedisCache == null) {micaRedisCache = SpringContextUtil.getBean(MicaRedisCache.class);}return micaRedisCache;}/*** 获取短信验证码并缓存** @param uuid 手机号/验证码类型唯一标识* @return 验证码*/public static String getSmsCode(String uuid) {String code = $.random(6, RandomType.INT);CacheKey smsKey = SmsUtils.getSmsKey(uuid);getMicaRedisCache().set(smsKey, code);return code;}}

/*** 数据库sms模板产量*/public class OpsConstants {/*** 阿里云policy缓存标识*/public static final String ALIOSS_POLICY = "ali:oss_policy";/*** 阿里云sms缓存标识*/public static final String ALISMS_KEY = "ali:sms_code";/*** 验证码*/public static final String SMS_TEMPLATE_VALIDATE = "validate";/*** 通知*/public static final String SMS_TEMPLATE_NOTICE = "notice";/*** 推广*/public static final String SMS_TEMPLATE_PROMO = "promo";}

使用

if (ObjectUtils.isEmpty(phone)) {return fail("手机号不能为空");}if (!SmsUtils.checkPhoneNum(phone) && !SmsUtils.checkMobileNum(phone)) {return fail("手机号码不正确");}if (ObjectUtils.isEmpty(code)) {return fail("验证码不能为空");}boolean validated = SmsUtils.validate(phone, code);if (!validated) {return fail("验证码错误");}

maven依赖

<properties><mica.version>2.5.4</mica.version> <!-- /artifact/net.dreamlu/mica-bom --></properties><dependencyManagement><dependencies><dependency><groupId>net.dreamlu</groupId><artifactId>mica-core</artifactId><version>${mica.version}</version></dependency><dependency><groupId>net.dreamlu</groupId> <!-- redis --><artifactId>mica-redis</artifactId><version>${mica.version}</version></dependency> </dependencies></dependencyManagement>

2、后端生成验证码

import cn.hutool.core.util.IdUtil;import mon.entity.ValidateData;import com.ruoyi.framework.web.controller.BaseController;import com.ruoyi.system.setting.security.LoginBody;import lombok.AllArgsConstructor;import lombok.extern.slf4j.Slf4j;import net.dreamlu.mica.captcha.service.ICaptchaService;import net.dreamlu.mica.core.result.R;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;/*** @Description 登陆 控制层*/@Slf4j@RestController@AllArgsConstructorpublic class LoginController extends BaseController {private final ICaptchaService captchaService;/*** 生成验证码*/@GetMapping("/captchaImage")public R getCode() {String uuid = IdUtil.fastUUID();String img = captchaService.generateBase64(uuid);ValidateData validateData = new ValidateData();validateData.setUuid(uuid);validateData.setCode(img);return success(validateData);}/*** 用户登陆*/@PostMapping("/login")public R login(@Validated @RequestBody LoginBody loginBody) {boolean validated = captchaService.validate(loginBody.getUuid(), loginBody.getCode());if (!validated) {return fail("验证码错误");}//TODOreturn success();}}

maven依赖

<properties><hutool.version>5.7.13</hutool.version> <!-- /artifact/cn.hutool/hutool-all --><mica.version>2.5.4</mica.version> <!-- /artifact/net.dreamlu/mica-bom --></properties><dependencyManagement><dependencies><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version></dependency><dependency><groupId>net.dreamlu</groupId><artifactId>mica-captcha</artifactId><version>${mica.version}</version></dependency></dependencies></dependencyManagement>

转载请注明出处:BestEternity亲笔。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。