超详细的阿里云短信验证码服务接入流程(最新版)——包含工具类可直接使用(java) - Go语言中文社区

超详细的阿里云短信验证码服务接入流程(最新版)——包含工具类可直接使用(java)


一、使用步骤
1、申请阿里云账号并认证
链接地址:https://www.aliyun.com/product/sms
2、创建一个新的AccessKeys 包含AccessKey ID 和Access Key Secret 记得截图保存 (最重要的一步)
在这里插入图片描述
在这里插入图片描述
3、新建签名和短信模板
在这里插入图片描述
因为阿里照顾到开发人员使用短信服务 所以可以 选择通用场景 不需要上传材料!
在这里插入图片描述
模板选择 注:个人用户只能选择验证码 其他无法通过申请
在这里插入图片描述
项目配置AccessKey ID 和Access Key Secret
在这里插入图片描述

AccessKey配置类 
@Configuration
@PropertySource(value="classpath:application.yml")
public class SmsConfig {


    public static String accessKeyID;


    public static String AccessKeySecret;

    public String getAccessKeyID() {
        return accessKeyID;
    }

    @Value("${aliyunSms.AccessKeyID}")
    public void setAccessKeyID(String accessKeyID) {
        SmsConfig.accessKeyID = accessKeyID;
    }

    public String getAccessKeySecret() {
        return AccessKeySecret;
    }

    @Value("${aliyunSms.AccessKeySecret}")
    public void setAccessKeySecret(String accessKeySecret) {
        SmsConfig.AccessKeySecret = accessKeySecret;
    }
}

创建请求工具类 我写了登录和注册请求验证码 这里只放出登录的模板
在这里插入图片描述

登录验证码生成请求工具类
public class SmsLoginRequest {

   public static int code ;

    private static Log logger= LogFactory.getLog(SmsRegisteRequest.class);


    public static CommonRequest generateSmsRequest(String phone){
        //随机生成六位验证码
        code = (int)((Math.random()*9+1)*100000);
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");
        //目前阿里最新的设置请求体的方式 
        request.putQueryParameter("RegionId", "cn-hangzhou");
        request.putQueryParameter("PhoneNumbers",phone );
        request.putQueryParameter("SignName", 签名);
        request.putQueryParameter("TemplateCode", 模板code);
        request.putQueryParameter("TemplateParam", "{"code":""+code+""}");
        return request;
    }
}

最后controller层 短信发送方法

结合了Redis缓存 
  /**
     * 发送验证码
     *
     * @return
     */
    @RequestMapping(value = "/sendSms", method = RequestMethod.POST)
    @Transactional(rollbackFor = MyException.class)
    public RetResult<?> sendVerificationCode(@RequestBody UserBO userBO)throws MyException {
       
            //短信登录验证
            SmsUtil.sendLoginSms(userBO.getPhone());
            int loginCode = SmsLoginRequest.code;
            //将code存入缓存 并设置过期时间为 1分钟
            stringRedisTemplate.opsForValue().set(userBO.getPhone(), String.valueOf(loginCode));
            stringRedisTemplate.expire(userBO.getPhone(), 1, TimeUnit.MINUTES);
            if (loginCode <= 0) {
                throw new MyException("验证码发送失败!");
            }
            return RetResponse.makeOKRsp("短信验证码已发送,请在1分钟内确认!");
    }

源码地址: https://github.com/MandalasWang/sms-server

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42083036/article/details/102463595
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-27 22:15:57
  • 阅读 ( 1642 )
  • 分类:职场

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢