如果实现短信验证,上教程,这里用的阿里云短信服务
进入短信服务后开通就行,可以体验100条免费,刚好测试用

这里由自定义和专用,测试的话就选择专用吧,自定义要审核,
SendSms_短信服务_API调试-阿里云OpenAPI开发者门户 (aliyun.com)
这里是方法api,有对应的教程
| 应用场景 | 模板示例 |
|---|---|
| 登录/验证 |
|
| 注册 |
|
| 重置密码 | 您的动态码为:${code},您正在进行密码重置操作,如非本人操作,请忽略本短信! |
| 变更信息 | 验证码为:${code},您正在尝试变更重要信息,请妥善保管账户信息。 |
废话就不说了!
- <!-- 短信依赖 -->
- <dependency>
- <groupId>com.aliyun</groupId>
- <artifactId>dysmsapi20170525</artifactId>
- <version>2.0.24</version>
- </dependency>
- package com.xiaoyu;
-
-
- import com.aliyun.dysmsapi20170525.Client;
- import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
- import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
- import com.aliyun.teaopenapi.models.Config;
-
- import java.util.Random;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
-
- public class SendSms {
- public static void main(String[] args) throws Exception {
-
- String phoneNumber = "你的手机号";
- if (isValidPhoneNumber(phoneNumber)) {
-
- Config config = new Config();
- config.setType("access_key"); // 使用AK初始化凭据客户端,还有其他的STS Token、AK及RamRoleArn、ECS实例RAM角色、OIDCRoleArn、URI凭据、Bearer Token(目前只有云呼叫中心CCC这款产品支持Bearer Token的凭据初始化方式)
- config.setAccessKeyId("你的AccessKey ID"); // AccessKey ID
- config.setAccessKeySecret("你的AccessKey Secret"); // AccessKey Secret
- config.endpoint = "dysmsapi.aliyuncs.com";
-
- Client client = new Client(config);
-
- SendSmsRequest request = new SendSmsRequest();
- request.setPhoneNumbers(phoneNumber)
- .setSignName("阿里云短信测试")//短信签名
- .setTemplateCode("SMS_154950909")//短信模板
- .setTemplateParam("{\"code\":" + generateVerificationCode() + "}");
- SendSmsResponse response = client.sendSms(request);
- Integer statusCode = response.getStatusCode();
- System.out.println("状态码:" + statusCode); //打印状态码,200成功
- } else {
- System.out.println("手机号不合法");
- }
- }
-
-
- //生成6位数验证码
- private static String generateVerificationCode() {
- Random random = new Random();
- int code = 100000 + random.nextInt(900000); // 生成100000到999999之间的随机数
- return String.valueOf(code);
- }
-
- //验证手机号
- private static boolean isValidPhoneNumber(String phoneNumber) {
- // 定义中国大陆手机号的正则表达式
- String regex = "^1[3456789]\\d{9}$";
- // 编译正则表达式
- Pattern pattern = Pattern.compile(regex);
- // 创建 Matcher 对象
- Matcher matcher = pattern.matcher(phoneNumber);
- // 进行匹配并返回结果
- return matcher.matches();
- }
- }
#这里强调一下,阿里云这里建议使用STS Token比较安全,我这里使用ak初始化非常不安全,不推荐在项目里面这样写