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手机号校验、短信验证码、验证码工具类相关推荐

  1. java 手机号脱敏,身份证号脱敏 工具类

    java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...

  2. java代码实现短信接受验证码

    1.本文以联信通短信平台为例.其客户端界面如下 2.后台实现java代码:首先导入依赖需要的jar包(用的maven项目) <dependency><groupId>commo ...

  3. Java实现发送短信验证验证码功能

    这几天老大让我弄一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信 ...

  4. ThinkPHP6集成腾讯云、短信宝短信发送的工具类

    composer安装 composer require mrwanghongda/sms-sdk 代码: use Mrwanghongda\SmsSdk\Sms\SmsFactory;/*** 短信宝 ...

  5. 基于阿里云的短信接口的工具类及三个jar包下载地址

    https://blog.csdn.net/Mr_zzr/article/details/100168118 上面这个写的很好! 三个jar包下载地址在我的github: https://github ...

  6. java 实现发送短信验证码(网易云)

    链接:https://pan.baidu.com/s/1saRmzciNQWpFxHJRN0ISTg 密码:siyt 实现发送验证码的工程下载 1.我们打开这个工程,查看其中的代码 package c ...

  7. java限制发送短信次数_使用java发送短信验证码码,出现流量限制怎么办?急急急...

    注册登录后需要企业认证,直接在某度上找一张清晰有红章的企业营业执照,注意要细心点,要看看有没有水印.我第一次就没注意上传了一张有水印的营业执照,从此这个账号再也没有审核通过了,后面只能换个账号.都是后 ...

  8. java中阿里短信服务(附带随机短信验证码生成类) --菜鸟小回

    java中阿里短信服务(短信验证码) 文章目录 java中阿里短信服务(短信验证码) 1. 创建签名 2. 创建模板 3. 测试验证码功能 4. 查看Api Demo 5. 获取AK信息 6. 复制A ...

  9. 阿里云——Java实现手机短信验证码功能

    目录 如何实现短信验证码功能 1.准备工作 1.1 注册 阿里云 账号,并完成实名认证.找到短信服务功能. 1.2 开通短信服务 1.3 签名与模板 1.4 获取AccessKey 1.5 打开短信控 ...

  10. java 图形校验_java图形验证码生成工具类 web页面校验验证码

    java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...

最新文章

  1. 单元测试:使用mocha和should.js搭建nodejs的单元测试
  2. master-slave(主/从)模式
  3. 使用 [funcref boost::pfr::get] 按索引访问结构体字段的测试程序
  4. linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...
  5. Windows Azure Cloud Service (8) Role及其生命周期模型
  6. try catch异常后会执行后面的代码吗_Java的异常体系
  7. 原生php phpmailer 发送邮件 email
  8. java json jar包下载_jsonobject必备jar包
  9. 推荐几个用于Linux系统的PDF文档查看器
  10. 电信光猫の破解使用路由
  11. 2019计算机保研 中科院信工所夏令营+中科院软件所九推记录
  12. am大学计算机科学,美国大学本科计算机科学专业排名一览
  13. ArcGIS Pro与ArcGis区别
  14. 2019年IT行业的十大热门岗位
  15. SQL Server配置管理器没有任何项目
  16. 如何在电脑上用Win11便签备忘录提醒重要工作
  17. 运维开发工程师的必备技能总结
  18. excel切片器_Excel切片器,让图表动起来
  19. 使用mysql Installer安装失败处理办法
  20. python文件下载

热门文章

  1. 世界各地 史上最全最详细无线通信频率分配表(内容含概wifi、2.4G、5G,绝对值得收藏)
  2. 使用java导入excel表格中的内容进入到数据库中,出现excel表格的后缀名错误,如何解决。
  3. 江苏省普通话水平测试计算机评分细则,江苏省计算机辅助普通话水平测试评分细则...
  4. EXCEL10:excel看板
  5. scanf函数解析,附带rewind函数(清空缓存)
  6. 人工智能现在的技术“好玩”到了什么程度?
  7. Docker基础认识与docker安装以及环境配置
  8. android 系统 优化设置,优化设置 让你的Android手机快人一步
  9. PHP:include包含文件局部引入全局变量失效的作用域问题
  10. java web查询某个时间段记录