短信验证码实现(阿里云)

如果实现短信验证,上教程,这里用的阿里云短信服务

短信服务 (aliyun.com)

进入短信服务后开通就行,可以体验100条免费,刚好测试用

这里由自定义和专用,测试的话就选择专用吧,自定义要审核,

SendSms_短信服务_API调试-阿里云OpenAPI开发者门户 (aliyun.com)

这里是方法api,有对应的教程

验证码模板示例

应用场景 模板示例
登录/验证 * 您的验证码${code},该验证码5分钟内有效,请勿泄漏于他人! * 您的验证码:${code},您正进行身份验证,打死不告诉别人! * 验证码为:${code},您正在登录,若非本人操作,请勿泄露。
注册 * 您正在申请手机注册,验证码为:${code},5分钟内有效! * 尊敬的用户,您的注册会员动态密码为:${code},请勿泄漏于他人! * 您的注册码:${code},如非本人操作,请忽略本短信! * 您的校验码:${code},您正在注册成为会员,感谢您的支持! * 验证码为:${code},您正在注册成为平台会员,感谢您的支持!
重置密码 您的动态码为:${code},您正在进行密码重置操作,如非本人操作,请忽略本短信!
变更信息 验证码为:${code},您正在尝试变更重要信息,请妥善保管账户信息。
[ ]

废话就不说了!

复制代码
    <!-- 短信依赖 -->
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>dysmsapi20170525</artifactId>
        <version>2.0.24</version>
    </dependency>
java 复制代码
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初始化非常不安全,不推荐在项目里面这样写

相关推荐
wangbing11251 小时前
平台介绍-modbus设备调试
java
西索斯coding1 小时前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
wuminyu2 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
Flynn Liang2 小时前
大模型怎么自己调函数?Spring AI 2.0 Tool Calling 自动循环原理 + 完整时序图
java·人工智能·spring·agent·函数调用·springai·toolcalling
乌暮3 小时前
请求进门先安检:Spring 拦截器与统一功能实战指南
java·开发语言·后端·学习·spring
学长毕设3 小时前
基于SpringBoot的烘焙商品商品系统-附源码
java·spring boot·后端
金銀銅鐵4 小时前
[Java] 用纯 Swing 做一个《論語·學而》阅读器
java·ai编程·交互设计
艾伦_耶格宇5 小时前
【kubernetes - 1.28版本】-11 K8S核心组件
java·容器·kubernetes
2301_780789665 小时前
深度伪造即服务:新型网络诈骗的“完美面具”与识别之道
java·网络·ddos
LHICOD5 小时前
Linux-2
java·linux·后端·jar·vmware·svm·vm