注册阿里云账号,寻找阿里云短信服务接口
进入“接口调用”页面,获取AK秘钥
生成后需要记住keyID和keySecret(严格保密)
添加生成签名和模板,按照提示建立就好。
中间件代码说明
maven引入sdk
在项目的pom.xml中引入jar包
<!--短信验证 阿里云Start-->
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.0.0</version>
</dependency>
<!--短信验证 阿里云End-->
调用短信服务
在发送验证码接口中,controller接收 phone(电话号码),code(验证码)随机生成
String phone = hashMap.get("phone");
String code = RandomCode.getRandomCode();
存入Session中,之后返回SessionId供前端验证时使用
发送验证短信工具类
public class SmsUtil {
static final String PRODACT = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
static final String DOMAIN = "";//短信API产品域名(接口地址固定,无需修改)
//替换成你的AK
static final String ACCESSKEYID = "";//你的accessKeyId
static final String ACCESSKEYSECRET = "";//你的accessKeySecret
public static SendSmsResponse sendSms(String code, String telphone) throws ClientException {
//调整超时时间
System.setProperty("sun.net.client.defaultConnectTimeout","60000");
System.setProperty("sun.net.client.defaultReadTimeout","60000");
//初始化ascClient,暂时不支持多region(请勿修改)
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESSKEYID,
ACCESSKEYSECRET);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", PRODACT, DOMAIN);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
request.setPhoneNumbers(telphone);
//必填:短信签名-可在短信控制台中找到
request.setSignName("工程中心农资备案");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SMS_127000105");
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam("{\"code\":\""+code+"\"}");
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
logger.info(sendSmsResponse.getCode());
return sendSmsResponse;
}
}
主要是四大参数在控制台查找,对应写入,调用sdk中的方法,填入四大参数及电话号码即可发送验证短信
调用短信工具类代码:
if (phone.length() > 0){
SendSmsResponse smsResponse = SmsUtil.sendSms(code, phone);
if(smsResponse.getCode() != null && "OK".equals(smsResponse.getCode())){//发送成功
result = 1;
}
Session中已经存入code,修改密码接口验证即可。