阿里短信服务集成_阿里短信发送平台

阿里短信服务集成_阿里短信发送平台阿里短信集成,配置流程,代码实现

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

技术分享交流群:1125844267,大家可以进来唠嗑闲聊

前言

目前阿里短信不支持个人申请签名和模板,所以只能使用测试版固定的签名和模板


提示:以下是本篇文章正文内容,下面案例可供参考

一、控制台配置

1、进入阿里云官网,搜索“短信服务”进行购买
在这里插入图片描述
2、配置用户组和用户,获取AccessKey ID和AccessKey Secret
在这里插入图片描述
在这里插入图片描述
我们当然可以直接使用第一个“继续使用AccessKey”来直接创建AccessKey,但是为了安全(人家也有安全提示),所以咱就听话使用第二个。点击进入后配置用户组,添加关于短信的权限,然后添加一个用户,属于短信这个用户组,这个用户就自动拥有的用户组所拥有的短信权限。
在这里插入图片描述
创建用户的时候一定要记得勾选这个,并且记下来AccessKey Secret,因为只显示一次,之后就没了。
在这里插入图片描述

二、代码实现

上边直接点击进去就有阿里提供的各种语言的发送短信的代码
在这里插入图片描述
它有一个同步的代码和一个异步的代码,异步的按它的代码放到项目中报错,所以直接用的同步的

<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>dysmsapi20170525</artifactId>
            <version>2.0.9</version>
        </dependency>

Jetbrains全家桶1年46,售后保障稳定

/** * 发送短信工具类 */
public class SendSMS { 
   
    /** * 使用AK&SK初始化账号Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */
    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { 
   
        Config config = new Config()
                // 您的AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }
}
import org.apache.commons.lang3.RandomStringUtils;
=======================================================

String code = RandomStringUtils.randomNumeric(4);  //生成四位数字的验证码
com.aliyun.dysmsapi20170525.Client client = SendSMS.createClient(accessKeyId, accessKeySecret);  //参数用你真实的替换
                    SendSmsRequest sendSmsRequest = new SendSmsRequest()
                            .setSignName("阿里云短信测试") //签名,测试只能这么写
                            .setTemplateCode("SMS_154950909")  //测试模板(固定)
                            .setPhoneNumbers(phone)  //手机号
                            .setTemplateParam("{\"code\":\""+code+"\"}");
                    // 复制代码运行请自行打印 API 的返回值
                    SendSmsResponse result = client.sendSms(sendSmsRequest);
                    log.info("短信登录API返回的状态码描述:{}",result.getBody().getMessage());
                    if("OK".equalsIgnoreCase(result.getBody().getCode())){ 
    //OK表明发送成功,将验证码保存到redis,设置过期时间为5分钟
                        redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
                        return ResultData.success(messageUtil.message("messages.codeLoginTip1"));  //根据自己的实际返回
                    }else { 
   
                        return ResultData.error(messageUtil.message("messages.codeLoginTip2"));  //根据自己的实际返回
                    }

验证的时候从redis中取出对应手机号的验证码。我这是集成到Oauth2中的短信登录,参数获取可能不太一样,但是验证逻辑肯定都是一样的

String mobile = httpServletRequest.getParameter("mobile");
                String codeRequest = httpServletRequest.getParameter("code");
                String codeRedis = redisTemplate.opsForValue().get(mobile) == null ? "" : String.valueOf(redisTemplate.opsForValue().get(mobile));
                SysUser sysUser = userService.getUserByMobile(mobile);
                if(sysUser == null){ 
   
                    //throw new SessionAuthenticationException("该手机号不是系统注册用户");
                    throw new SessionAuthenticationException("messages.codeLoginTip1");
                }
                if(StringUtils.isEmpty(mobile)){ 
   
                    //throw new SessionAuthenticationException("手机号不能为空");
                    throw new SessionAuthenticationException("messages.codeLoginTip2");
                }
                if(StringUtils.isEmpty(codeRequest)){ 
   
                    //throw new SessionAuthenticationException("短信验证码不能为空");
                    throw new SessionAuthenticationException("messages.codeLoginTip3");
                }
                if(StringUtils.isEmpty(codeRedis)){ 
   
                    //throw new SessionAuthenticationException("短信验证码已过期");
                    throw new SessionAuthenticationException("messages.codeLoginTip4");
                }
                if(!codeRequest.equals(codeRedis)){ 
   
                    //throw new SessionAuthenticationException("短信验证码不正确");
                    throw new SessionAuthenticationException("messages.codeLoginTip5");
                }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213480.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 有关java的参考文献近三年含英文_关于java的外文文献

    有关java的参考文献近三年含英文_关于java的外文文献Java演进英文文献和中文翻译时间:2019-06-1610:07来源:毕业论文InTheFeelofJavaJamesGoslingstatedthat:Javaisabluecollarlanguage.ItsnotPhDthesismaterialbutalanguageforajob.Javafeelsveryfamiliarto…

    2022年9月30日
  • 闫学灿acwing_分组背包问题

    闫学灿acwing_分组背包问题有 N 种物品和一个容量是 V 的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si 次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。si=−1 表示第 i 种

    2022年8月8日
  • Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)

    Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)最近研究了一下流媒体技术,也试着用免费开源的Red5搭建了流服务器,实现了直播,视频播放,远程视频会议等功能,下面是近期实践的总结,一.先介绍一下流媒体技术:所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看、收听(即所谓的“在线欣赏”),而不需要等整个压缩文件下载到自己的机器上才可以欣赏的网络传输技术。一般来说,一个

    2022年6月5日
  • Python Lambda匿名函数示例

    Python Lambda匿名函数示例本文转自https://www.freeaihub.com/article/lambda-in-python.html,该页可在线互动学习匿名函数在本示例中,我们将看到如何在Python中使用Lam

    2022年7月5日
  • windows11修改用户名_win10家庭中文版怎么更改用户名

    windows11修改用户名_win10家庭中文版怎么更改用户名按:新买的电脑一般预装Windows11系统(家庭与学生版),新电脑初次开机使用微软邮箱账号登录,则系统将用户名自动设置成邮箱前几位。我的用户名便是一串数字【231xx】(qq邮箱前5位),看着很不舒服,查了很多方法并最终修改成功!!记录一下修改过程,希望能帮到同样想改用户名的人。首先,强调一点,修改失败可能导致很严重的问题,电脑如有重要资料,务必请提前备份!!!一什么情况需要修改用户名最主要的情况就是初次使用设置了中文用户名。很多软件不支持路径包含中文字……………..

    2022年10月14日
  • mac配置环境变量不生效

    mac配置环境变量不生效mac修改环境变量原理:主要原因是每次终端启动时候zsh加载的是/etc/zshrc文件,而‘zshrc’文件中并没有定义任务环境变量。cd/etc/vizshrc最后一行添加:source~/.bash_profile保存,重新打开终端即可…

    2022年6月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号