快出海  > 阿里云  >  SpringBoot整合阿里云短信验证服务的使用示例

SpringBoot整合阿里云短信验证服务的使用示例

来源:CSDN
作者:BLUcoding
时间:2021-02-23

SpringBoot整合阿里云短信验证服务的使用示例

1.添加 RAM 用户并赋予权限:AliyunDysmsFullAccess(管理短信服务(SMS)的权限)

2.添加短信模板并等待审核通过,记录下模板CODE:SMS_205403229

ia_500000006.png

3. 添加签名,适用场景选择验证码,等待审核通过,记录下签名名称:BLU的java自学网站

4.SpringBoot项目导入依赖:

<dependency>

    <groupId>com.aliyun</groupId>

    <artifactId>aliyun-java-sdk-core</artifactId>

    <version>4.5.3</version>

</dependency>

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.62</version>

</dependency>

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

测试类:

@Test

void contextLoads() {

    //连接阿里云

    DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "你的AccessKey ID", "你的AccessKey Secret");

    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");

    //自定义的参数(手机号、签名和模版CODE)

    request.putQueryParameter("PhoneNumbers", "测试的手机号码");

    request.putQueryParameter("SignName", "你的签名名称");

    request.putQueryParameter("TemplateCode", "你的模版CODE");

    //构建一个短信验证码

    HashMap<String, Object> map = new HashMap<>();

    map.put("code", 2333);

    request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));

    //尝试发送

    try {

        CommonResponse response = client.getCommonResponse(request);

        System.out.println(response.getData());

    } catch (ServerException e) {

        e.printStackTrace();

    } catch (ClientException e) {

        e.printStackTrace();

    }

}

ia_500000007.png

配置文件:

server.port=9090

spring.redis.host=127.0.0.1

spring.redis.port=6379

Service接口:

package com.blu.service;

import java.util.Map;

public interface SendSms {

public boolean send(String phoneNum,String trmplateCode,Map<String,Object> code);

}

Service实现类:

package com.blu.service.Impl;

import java.util.Map;

import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;

import com.aliyuncs.CommonRequest;

import com.aliyuncs.CommonResponse;

import com.aliyuncs.DefaultAcsClient;

import com.aliyuncs.IAcsClient;

import com.aliyuncs.exceptions.ClientException;

import com.aliyuncs.exceptions.ServerException;

import com.aliyuncs.http.MethodType;

import com.aliyuncs.profile.DefaultProfile;

import com.blu.service.SendSms;

@Service

public class SendSmsImpl implements SendSms {

@Override

public boolean send(String phoneNum, String trmplateCode, Map<String, Object> code) {

// 连接阿里云

DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "你的AccessKey ID",

"你的AccessKey Secret");

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("PhoneNumbers", phoneNum);

request.putQueryParameter("SignName", "BLU的java自学网站");

request.putQueryParameter("TemplateCode", trmplateCode);

request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));

try {

CommonResponse response = client.getCommonResponse(request);

System.out.println(response.getData());

//返回是否成功

return response.getHttpResponse().isSuccess();

} catch (ServerException e) {

e.printStackTrace();

} catch (ClientException e) {

e.printStackTrace();

}

return false;

}

}

Controller接口:

package com.blu.controller;

import java.util.HashMap;

import java.util.UUID;

import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.web.bind.annotation.CrossOrigin;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RestController;

import com.aliyuncs.utils.StringUtils;

import com.blu.service.SendSms;

@RestController

@CrossOrigin

public class SmsApiController {

@Autowired

private SendSms sendSms;

@Autowired

private RedisTemplate<String,String> redisTemplate;

@GetMapping("send/{phone}")

public String code(@PathVariable("phone") String phone) {

String code = redisTemplate.opsForValue().get(phone);

if(!StringUtils.isEmpty(code)) {

return phone + ':' + code + "还没有过期";

}else {

//生成4位验证码并存储到 redis 中

code = UUID.randomUUID().toString().substring(0,4);

HashMap<String, Object> map = new HashMap<>();

map.put("code", code);

boolean isSend = sendSms.send(phone, "SMS_205403229", map);

if(isSend) {

                //将验证码存入redis,并设置1分钟过期时间

redisTemplate.opsForValue().set(phone, code,1,TimeUnit.MINUTES);

return phone + ':' + code + "发送成功!";

}else {

return "发送失败!";

}

}

}

}

测试请求:http://localhost:9090/send/1565177xxxx

ia_500000008.png

ia_500000009.png

立即登录,阅读全文
版权说明

本文内容来自于CSDN,本站不拥有所有权,不承担相关法律责任。文章内容系作者个人观点,不代表快出海对观点赞同或支持。如有侵权,请联系管理员(hj@kchuhai.com)删除!

相关文章
阿里云如何使用CDN加速OSS资源
阿里云如何使用CDN加速OSS资源
当需要加速OSS上的静态资源时,可以通过阿里云CDN加速OSS域名,实现静态资源的访问加速。本文主要介绍如何使用CDN加速OSS资源。
阿里云
3天前
阿里云OSS云存储管理实践
阿里云OSS云存储管理实践
服务器资源地址 系统会自动去创建一台Linux ECS。其中,创建的ECS中已经部署了web应用和OSS python SDK。在本实验中,已创建的ECS作为web服务器,浏览器中直接访问其IP地址会显示包含四个小图片的页面,并且四个图片都保存在ECS本地。通过调用OSS API将四个图片上传到OSS中,同时删除保存在ECS本地的四个图片,此时访问ECS IP将会看到页面中没有图片可以显示。
mb601cf746c65b3
3天前
阿里云ECS上实现NFS挂载
阿里云ECS上实现NFS挂载
由于项目需要,现在需要在阿里云上多台服务器上共享一些静态的文件数据。开始时选型方案有:OSS对象存储、NAS存储、自己搭建NFS;考虑成本需要,选择了自己搭建NFS。 项目在阿里金融云上,金融云上产品比公有云贵多了。 下面讲解过程。
pizibaidu
3天前
阿里云OSS一键删除Bucket
阿里云OSS一键删除Bucket
阿里云OSS的Bucket默认是不能在有文件的情况下进行一键删除。是必须删除文件后才可以删除bucket的,如果确定里面的文件都不再需要可以使用osscmd的deletewholebucket接口,但是该操作数据肯定是无法恢复的,慎重操作。
恒星v
3天前
阿里云环境迁移记录 - RabbitMQ集群搭建
阿里云环境迁移记录 - RabbitMQ集群搭建
要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。RabbitMQ的集群节点包括内存节点、磁盘节点。RabbitMQ支持消息的持久化也就是数据写在磁盘上,默认是磁盘节点。
layveen
3天前
扫描关注获取更多 阿里云 的相关信息
服务商推荐 更多 >
百度国际MediaGo
百度国际MediaGo
百度国际是百度极具战略意义的海外业务发展部门,拥有超过10年的出海经验。旗下出海营销平台MediaGo旨在为全球广告主提供营销整合方案。成立以来,MediaGo不断进化,在磨炼一站式海外营销服务能力的同时,连接Snapchat、Pinterest、Reddit等优质海外平台,成为连接广告主与价值洼地的桥梁。
本地化变现推广
北京易掌云峰科技有限公司
环信即时通讯云
环信,国内领先的即时通讯、在线客服、智能客服机器人提供商。
云服务
iGlobe Advisory Inc.
爱个萝卜本地化 iGlobe
爱个萝卜总部位于加拿大温哥华,为游戏出海提供所有主要语言的母语级本地化翻译,并由专业项目经理为您保驾护航。并可向全球游戏伙伴提供全方位服务,包括目标市场开拓策略,以及各国本地化运营项目监督。
本地化
厦门比朋科技股份有限公司
比朋科技股份
云服务,软件服务,定制开发
云服务外包源码
北京云中融信网络科技有限公司
融云
融云为全球开发者和企业提供 IM即时通讯和实时音视频通信云服务,独立的海外数据中心,全球 30 万+应用的通信选择。一套 SDK 解决所有通信场景,快速集成,1天实现跨国互动,实时沟通,助力应用出海
云服务
深圳哈希信息技术有限公司
哈希信息
深圳哈希信息技术有限公司成立于2018年,是国内领先的智能网络服务提供商,基于软件定义网络、下一代网络协议、大数据等技术研发面向不同行业领域的产品和解决方案,秉着“专业、创新、信任、分享“的核心价值观,致力为客户提供一个高效可靠的流量云平台。公司对外提供分发云(CDN)、加速云(动态加速)、安全云(防DDOS&云WAF)、流量云(广告交易)、边缘云、短信云等多个云产品,帮助游戏/资讯等互联网公司构建、加速和更好的保护核心业务。
云服务变现
扫码登录
打开扫一扫, 关注公众号后即可登录/注册
加载中
二维码已失效 请重试
刷新
账号登录/注册
小程序
公众号
商务合作
投稿采访
出海管家