Java手机号校验、短信验证码、验证码工具类
1、手机号校验、生成短信验证码缓存redis、验证短信验证码
import com.ruoyi.common.constant.OpsConstants;
import com.ruoyi.common.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;@Data
public 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> <!-- https://mvnrepository.com/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 com.ruoyi.common.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
@AllArgsConstructor
public 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> <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --><mica.version>2.5.4</mica.version> <!-- https://mvnrepository.com/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亲笔。
Java手机号校验、短信验证码、验证码工具类相关推荐
- java 手机号脱敏,身份证号脱敏 工具类
java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...
- java代码实现短信接受验证码
1.本文以联信通短信平台为例.其客户端界面如下 2.后台实现java代码:首先导入依赖需要的jar包(用的maven项目) <dependency><groupId>commo ...
- Java实现发送短信验证验证码功能
这几天老大让我弄一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信 ...
- ThinkPHP6集成腾讯云、短信宝短信发送的工具类
composer安装 composer require mrwanghongda/sms-sdk 代码: use Mrwanghongda\SmsSdk\Sms\SmsFactory;/*** 短信宝 ...
- 基于阿里云的短信接口的工具类及三个jar包下载地址
https://blog.csdn.net/Mr_zzr/article/details/100168118 上面这个写的很好! 三个jar包下载地址在我的github: https://github ...
- java 实现发送短信验证码(网易云)
链接:https://pan.baidu.com/s/1saRmzciNQWpFxHJRN0ISTg 密码:siyt 实现发送验证码的工程下载 1.我们打开这个工程,查看其中的代码 package c ...
- java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...
注册登录后需要企业认证,直接在某度上找一张清晰有红章的企业营业执照,注意要细心点,要看看有没有水印.我第一次就没注意上传了一张有水印的营业执照,从此这个账号再也没有审核通过了,后面只能换个账号.都是后 ...
- java中阿里短信服务(附带随机短信验证码生成类) --菜鸟小回
java中阿里短信服务(短信验证码) 文章目录 java中阿里短信服务(短信验证码) 1. 创建签名 2. 创建模板 3. 测试验证码功能 4. 查看Api Demo 5. 获取AK信息 6. 复制A ...
- 阿里云——Java实现手机短信验证码功能
目录 如何实现短信验证码功能 1.准备工作 1.1 注册 阿里云 账号,并完成实名认证.找到短信服务功能. 1.2 开通短信服务 1.3 签名与模板 1.4 获取AccessKey 1.5 打开短信控 ...
- java 图形校验_java图形验证码生成工具类 web页面校验验证码
java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...
最新文章
- 单元测试:使用mocha和should.js搭建nodejs的单元测试
- master-slave(主/从)模式
- 使用 [funcref boost::pfr::get] 按索引访问结构体字段的测试程序
- linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...
- Windows Azure Cloud Service (8) Role及其生命周期模型
- try catch异常后会执行后面的代码吗_Java的异常体系
- 原生php phpmailer 发送邮件 email
- java json jar包下载_jsonobject必备jar包
- 推荐几个用于Linux系统的PDF文档查看器
- 电信光猫の破解使用路由
- 2019计算机保研 中科院信工所夏令营+中科院软件所九推记录
- am大学计算机科学,美国大学本科计算机科学专业排名一览
- ArcGIS Pro与ArcGis区别
- 2019年IT行业的十大热门岗位
- SQL Server配置管理器没有任何项目
- 如何在电脑上用Win11便签备忘录提醒重要工作
- 运维开发工程师的必备技能总结
- excel切片器_Excel切片器,让图表动起来
- 使用mysql Installer安装失败处理办法
- python文件下载
热门文章
- 世界各地 史上最全最详细无线通信频率分配表(内容含概wifi、2.4G、5G,绝对值得收藏)
- 使用java导入excel表格中的内容进入到数据库中,出现excel表格的后缀名错误,如何解决。
- 江苏省普通话水平测试计算机评分细则,江苏省计算机辅助普通话水平测试评分细则...
- EXCEL10:excel看板
- scanf函数解析,附带rewind函数(清空缓存)
- 人工智能现在的技术“好玩”到了什么程度?
- Docker基础认识与docker安装以及环境配置
- android 系统 优化设置,优化设置 让你的Android手机快人一步
- PHP:include包含文件局部引入全局变量失效的作用域问题
- java web查询某个时间段记录