首页 > 其他分享 >阿里云验证码短信功能---SpringBoot项目

阿里云验证码短信功能---SpringBoot项目

时间:2023-05-31 10:47:14浏览次数:49  
标签:code SpringBoot 验证码 accessKeyId --- aliyun new com String

阿里云官网:https://www.aliyun.com/activity/2023caigouji/shangyuncaigouji?utm_content=se_1013408957

准备工作
注册阿里云账号
申请AccessKeyID和AccessKeySecret
搜索“短信服务SMS”,选择“免费开通”即可
选择国内消息,申请签名管理和模板管理

准备完成后我们可以获取AccessKeyID,AccessKeySecret,签名名称,模板CODE。

加入相关依赖

点击查看代码
<!--阿里云短信依赖-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.3</version>
        </dependency>

代码实现
发送短信工具类

点击查看代码
/**
 * 短信发送工具类
 */
@Component
public class SMSUtil {

    @Value(value = "${Reggie.sms.accessKeyId}")
    private String accessKeyId="accessKeyId";
    @Value(value = "${Reggie.sms.accessKeySecret}")
    private String accessKeySecret="accessKeySecret";
    @Value(value = "${Reggie.sms.signName}")
    private String setSignName="签名名称";
    @Value(value = "${Reggie.sms.templateCode}")
    private String setTemplateCode="模板CODE";

    //发送短信
    public void sendMsg(String phone,String code){
        try {
            // 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html
            com.aliyun.dysmsapi20170525.Client client = SMSUtil.createClient(
                    accessKeyId,
                    accessKeySecret);
            com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
                    .setSignName(setSignName)
                    .setTemplateCode(setTemplateCode)
                    .setPhoneNumbers(phone)
                    .setTemplateParam("{\"code\":\""+code+"\"}");
            com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
            // 复制代码运行请自行打印 API 的返回值
            client.sendSmsWithOptions(sendSmsRequest, runtime);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 必填,您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }
}

验证码生成工具类

点击查看代码
/**
 * 随机生成验证码工具类
 */
public class ValidateCodeUtils {
    /**
     * 随机生成验证码
     * @param length 长度为4位或者6位
     * @return
     */
    public static Integer generateValidateCode(int length){
        Integer code =null;
        if(length == 4){
            code = new Random().nextInt(9999);//生成随机数,最大为9999
            if(code < 1000){
                code = code + 1000;//保证随机数为4位数字
            }
        }else if(length == 6){
            code = new Random().nextInt(999999);//生成随机数,最大为999999
            if(code < 100000){
                code = code + 100000;//保证随机数为6位数字
            }
        }else{
            throw new RuntimeException("只能生成4位或6位数字验证码");
        }
        return code;
    }

    /**
     * 随机生成指定长度字符串验证码
     * @param length 长度
     * @return
     */
    public static String generateValidateCode4String(int length){
        Random rdm = new Random();
        String hash1 = Integer.toHexString(rdm.nextInt());
        String capstr = hash1.substring(0, length);
        return capstr;
    }
}

标签:code,SpringBoot,验证码,accessKeyId,---,aliyun,new,com,String
From: https://www.cnblogs.com/wzh-Official/p/17445369.html

相关文章

  • AD 域从组删除成员命令:Remove-ADGroupMember
    格式[命令][定义组][组名][定义成员][成员列表]注意:成员列表需要使用SamAccountName属性;注意:该删除不仅从组删除成员,并且将用户同时删除;命令remove-adgroupmember-identityITGroup-membershexiaohan,hexiaoyi确认是否确实要执行此操作?正在目标“CN=ITGroup,OU=......
  • 二分法应用——搜索旋转数组,以前一直在纠结a[0],a[-1],a[mid], target三者关系,其实最
    62·搜索旋转排序数组  描述给定一个有序数组,但是数组以某个元素作为支点进行了旋转(比如,0124567可能成为4567012)。给定一个目标值target进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。背完这套刷题模板,真......
  • vue中v-bind使用三目运算符绑定class
    <template><div><!--外边框的样式--><div:class="projectStatus===2?outlineDelay:outline"@click="clickProject(userProjectId)"><!--延期--><divv-if="projectStatus===2"......
  • yulong-hids 规则引擎,目前看到就是正则表达式和count技术
    规则项目提供的默认规则太简单和宽泛了,甚至包含一些错误,比如:有些不太精确,比如:另外规则引擎的匹配算法没有做优化,规则或者事件一旦多起来,server的负载会很高有些太宽泛导致误报非常高:agent在测试机才装2天就有近6w条告警,这是无法运营的,当然,规则支持细粒度控制(开关)还是很不错的3、功......
  • 2023-05-31 如何解决小程序的session_key泄露问题
    前言:微信小程序在接口检测出session_key泄露的bug,要求去除请求和响应中的session_key。排查:前端无法直接处理该问题,问题定位到后端,是后端接口返回了该session_key字段,由此被微信检测出来,被微信认为不安全所致。解决方案:后端接口不返回该字段即可。参考资料:https://developers.w......
  • Hive - 言出法随
            --显示当前数据库selectcurrent_database();--设置hive属性在命令行显示当前数据库sethive.cli.print.current.db=true; ......
  • 运行mem-data-analysis-framework
    下载:wgethttps://mem:[email protected]/mem-prototype/mem-data-analysis-framework.tar.gzdockerload<mem-data-analysis-framework.tar.gzdockerrun --network="host" -t -d  mem-prototype:latest 然后访问localhost:8080即可看到代码! 上传数据到dock......
  • 算法- 求解最大平均值的子树-经典dfs题目
    给一棵二叉树,找到有最大平均值的子树。返回子树的根结点。Example样例1输入:{1,-5,11,1,2,4,-2}输出:11说明:这棵树如下所示:1/\-511/\/\124-211子树的平均值是4.333,为最大的。样例2输入:{1,-5,11}输出:11说明:1/\-5......
  • SpringBoot项目中使用拦截器进行请求的拦截
    在没有拦截器拦截前端请求的情况下,即使用户不进行登录,却依然能够进入系统。这显然是不合理的。这里使用拦截器对其请求进行一个拦截并且过滤。将那些需要需要用户登录才能够展示的界面进行一个拦截,如果用户没有登录,就需要跳转到登录界面进行登录。没有拦截器的效果展示此时我们......
  • net core-调用接口方式实现IHostedService的停止和启动
    usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.AspNetCore.Authorization;[Route("home")][AllowAnonymous]publicclassHomeController:ControllerBase{ privatereadonlyIEnumerable<IHostedService>_hostedServices; privatereadonlyRec......