• 阿里云短信验证项目整合


    帮助文档:

    https://help.aliyun.com/product/44282.html?spm=5176.10629532.0.0.38311cbeYzBm73

    1、开通阿里云短信服务

    2、添加签名管理与模板管理

    (1)添加模板管理

    选择 国内消息 - 模板管理 - 添加模板

    点击提交,等待审核,审核通过后可以使用

    (2)添加签名管理

    选择 国内消息 - 签名管理 - 添加签名

    点击添加签名,进入添加页面,填入相关信息

    注意:签名要写的有实际意义

    (3)点击提交,等待审核,审核通过后可以使

    3、编写发送短信接口

    1、在service-msm的pom中引入依赖

    
        
            com.alibaba
            fastjson
        
        
            com.aliyun
            aliyun-java-sdk-core
        
    
    

    2、编写controller,根据手机号发送短信

    1. @RestController
    2. @RequestMapping("/msmservice/msm")
    3. @CrossOrigin
    4. public class MsmController {
    5. @Autowired
    6. private MsmService msmService;
    7. @Autowired
    8. private RedisTemplate<String,String> redisTemplate;
    9. //发送短信的方法
    10. @GetMapping("/send/{phone}")
    11. public R sendMsm(@PathVariable String phone){
    12. //从redis获取验证码,如果能获取,直接返回
    13. String code = redisTemplate.opsForValue().get(phone);
    14. if (!StringUtils.isEmpty(code)){
    15. return R.ok();
    16. }
    17. //获取不到就阿里云发送
    18. //生成随机值,并传递给阿里云短信,让他转发给手机
    19. code = RandomUtil.getSixBitRandom();
    20. HashMap<String, Object> map = new HashMap<>();
    21. map.put("code",code);
    22. //调用service中发送短信的方法
    23. boolean isSend = msmService.sendMsm(map, phone);
    24. if (isSend){
    25. //如果发送成功,把发送成功的code验证码保存到redis中,并设置有效时间,设置5分钟过期
    26. redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
    27. return R.ok();
    28. }else {
    29. return R.error().message("短信发送失败");
    30. }
    31. }
    32. }

    3、编写service

    • service接口
    1. public interface MsmService {
    2. //发送短信的方法
    3. boolean sendMsm(HashMap<String, Object> map, String phone);
    4. }
    • serviceImpl
    1. @Service
    2. public class MsmServiceImpl implements MsmService {
    3. //发送短信的方法
    4. @Override
    5. public boolean sendMsm(HashMap<String, Object> map, String phone) {
    6. if (StringUtils.isEmpty(phone))return false;
    7. //参数1:地域节点
    8. //参数2:AccessKey ID
    9. //参数3:AccessKey Secret
    10. DefaultProfile profile = DefaultProfile.getProfile("default", "LTAI4GBABS7Sq8MLf2RNwLuu", "ynfsD31FLdcRoQVFSIdHP7AeoKaf4o");
    11. DefaultAcsClient client = new DefaultAcsClient(profile);
    12. //设置相关固定参数
    13. CommonRequest request = new CommonRequest();
    14. //request.setProtocol(ProtocolType.HTTPS);
    15. request.setSysMethod(MethodType.POST); //提交方式,默认不能改
    16. request.setSysDomain("dysmsapi.aliyuncs.com");//请求阿里云哪里,默认不能改
    17. request.setSysVersion("2017-05-25");//版本号
    18. request.setSysAction("SendSms");//请求哪个方法
    19. //设置发送相关参数
    20. request.putQueryParameter("PhoneNumbers",phone);//设置要发送的【手机号】
    21. request.putQueryParameter("SignName","阿昌日语在线教育网站");//申请阿里云短信服务的【签名名称】
    22. request.putQueryParameter("TemplateCode","SMS_212711286");//申请阿里云短信服务的【模版中的 模版CODE
    23. //要求传递的code验证码为jason格式,可以使用JSONObject.toJSONString()将map转为json格式
    24. request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
    25. //最终发送
    26. try {
    27. CommonResponse response = client.getCommonResponse(request);
    28. return response.getHttpResponse().isSuccess();
    29. } catch (ClientException e) {
    30. e.printStackTrace();
    31. return false;
    32. }
    33. }
    34. }
  • 相关阅读:
    网站备份很重要:WordPress七牛云镜像存储插件,一键镜像静态资源到七牛云
    中伟视界:《安徽省非煤矿山风险防控建设》政策文件要求及项目实施情况详解
    【算法修炼】二分查找最接近元素(最接近下标)
    多测师肖sir_高级金牌讲师__接口测试之tonken (5.6)
    关于城市旅游的HTML网页设计 HTML+CSS上海博物馆网站 dreamweaver作业静态HTML网页设计 html网页制作期末大作业
    tensor张量 ------ python特殊的数据结构
    MFC Windows 程序设计[244]之简单的偏好(附源码)
    springBoot复杂对象表示和lombok的使用
    GBase8s数据库标识连接
    ruoyi-vue-pro 项目安装使用过程中的问题解决
  • 原文地址:https://blog.csdn.net/weixin_60257072/article/details/128120742