美文网首页我爱编程
基于阿里云短信服务 验证码发送的实现

基于阿里云短信服务 验证码发送的实现

作者: onlyHalfSoul | 来源:发表于2018-05-25 17:35 被阅读111次

注册阿里云账号,寻找阿里云短信服务接口

clipboar11d.png
clipboard11.png

进入“接口调用”页面,获取AK秘钥


clipboard123.png

生成后需要记住keyID和keySecret(严格保密)

添加生成签名和模板,按照提示建立就好。


clipb45oard.png

中间件代码说明
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,修改密码接口验证即可。

相关文章

网友评论

    本文标题:基于阿里云短信服务 验证码发送的实现

    本文链接:https://www.haomeiwen.com/subject/poyujftx.html