阿里云短信业务

阿里云创建用户组和用户

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

image-20200602073230505

搜索框搜索访问控制

image-20200602073730540

进入访问控制页面

image-20200602073841487

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

image-20200602073937305

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

image-20200602074101098

按要求填写相关信息

image-20200602074147557

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

image-20200602074302779

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

image-20200602074416138

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

image-20200602074555046

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

image-20200602074630513

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

image-20200602074733494

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

image-20200602074901526

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

image-20200602075140691

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

image-20200602075401278

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

image-20200602075448605

点击查看当前用户

image-20200602075530846

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

image-20200602075626334

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

image-20200602075803801

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

阿里云开通短信服务

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

image-20200602094954086

image-20200602095249487

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

image-20200602095332503

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

image-20200602095415706

image-20200602095518893

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

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

image-20200602095629528

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

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

确保Redis服务已经开启

创建一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值