今天看啥  ›  专栏  ›  西界__

阿里云短信业务

西界__  · 简书  ·  · 2020-12-16 17:11

阿里云创建用户组和用户

首先进入 阿里云官网 。点击右上角的登录进行登录(没有账号的进行注册登录)

image-20200602073230505

搜索框搜索 访问控制

image-20200602073730540

进入访问控制页面

image-20200602073841487

点击进入 管理控制台 进入到 RAM访问控制 页面

image-20200602073937305

点击左侧菜单栏的 用户组 点击 创建用户组 创建新的用户组

image-20200602074101098

按要求填写相关信息

image-20200602074147557

点击 添加权限 添加短信业务权限

image-20200602074302779

搜索框中搜索 短信 添加备注为 管理短信服务(SMS)的权限

image-20200602074416138

我们可以点击用户组名称进行查看

image-20200602074555046

点击 权限管理 查看当前用户组所拥有的权限

image-20200602074630513

接着点击左侧菜单栏 用户 进入页面点击 创建用户 创建新用户

image-20200602074733494

按照提示填写相关信息。<mark> 访问方式选择编程访问 </mark>

image-20200602074901526

<mark> 若开通编程访问,请及时保存 AccessKey 信息,页面关闭后将无法再次获取信息。此时页面会显示AccessKey Secret注意保存。 </mark>

image-20200602075140691

访问到用户页面。点击 添加用户组

image-20200602075401278

选择加入到之前创建的用户组

image-20200602075448605

点击查看当前用户

image-20200602075530846

点击 加入的组 查看当前加入的用户组。可以看到我们已经成功加入之前创建的用户组了

image-20200602075626334

接着点击 权限管理 可以看到个人权限为空,点击 继承用户组的权限 可以看到我们成功继承了加入的用户组的权限

image-20200602075803801

到此为止我们的阿里用户组和用户已经成功创建!

阿里云开通短信服务

搜索框中搜索 短信服务 .由于我开通了,所以直接进入短信服务的控制台。没有开通则选择开通服务。(注意此操作需要付费,所以保证账户里有余额)

image-20200602094954086
image-20200602095249487

点击左侧 国内信息 选择 模板管理 点击添加模板

image-20200602095332503

按照提示填写相关的信息。模板可以选择在 常用的模板库 进行选择

image-20200602095415706
image-20200602095518893

填写完成之后。等待审核通过。

接着点击 签名管理 选择 添加签名

image-20200602095629528

<mark> 适用场景选择验证码 </mark>按要求填写信息

image-20200602095757577

等待审核通过

快速学习

点击左边菜单的 快速学习 我们不填写直接点击 查看API Demo

image-20200602100010072

可以在右边看到相关的Java代码

image-20200602100102797

我们创建一个SpringBoot项目导入相关的依赖。包括阿里云的依赖

image-20200602100329334
<!--aliyun-java-sdk-->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.1</version>
</dependency>
<!--fastjson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.31</version>
</dependency>
<!--redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

将其左边的代码直接复制到SpringBoot的测试类中

image-20200602100612409
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);

CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
try {
    CommonResponse response = client.getCommonResponse(request);
    System.out.println(response.getData());
} catch (ServerException e) {
    e.printStackTrace();
} catch (ClientException e) {
    e.printStackTrace();
}

进行相应的修改。和添加相关的参数,注释。发送短信验证码2233

image-20200602101028397

点击运行。查看效果

image-20200602101157067

手机成功接收到短信验证!!

image-20200602101254144

集成Redis

前提我们已经导入了Redis依赖。接着配置Redis

image-20200602101441288
spring.redis.host=localhost
spring.redis.port=6379

<mark> 确保Redis服务已经开启 </mark>

创建一个service包,编写SendSms接口

image-20200602101714456
public interface SendSms {
    boolean send(String phoneNum, String templateCode, Map<String,Object> code);
}

创建实现包,编写SendSmsImpl实现类。将测试类的代码进行封装

image-20200602101916915

编写SmsApiController控制类

image-20200602102420940
@RestController
@CrossOrigin//跨域
public class SmsApiController {

    @Autowired
    SendSms sendSms;

    @Autowired
    RedisTemplate<String, String> redisTemplate;

    @GetMapping("/send/{phone}")
    public String code(@PathVariable("phone") String phone) {
        //调用发送方法,模拟真实业务redis
        String code = redisTemplate.opsForValue().get(phone);
        //查询redis中是否存在该手机号码的验证码
        if (!StringUtils.isEmpty(code)) {
            return phone + ":" + code+"已经存在,还没过期";
        }

        //生产验证码并存储到redis中
        code = UUID.randomUUID().toString().substring(0, 4);//截取前4位
        HashMap<String,Object> param = new HashMap<>();
        param.put("code",code);

        boolean flag = sendSms.send(phone, "SMS_191816503", param);//调用业务
        if (flag){
            redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);//存入redis中5分钟过期
            return phone + ":" + code+"发送成功!";
        }
        return phone + ":" + code+"发送失败!";
    }
}

启动项目,进行测试。验证码5bed发送成功

image-20200602102738193
image-20200602102759212

redis中也能查询到相关的键值对!

image-20200602103041132



原文地址:访问原文地址
快照地址: 访问文章快照