阿里云短信验证码开发

阿里云短信验证码开发

准备

首先需要在阿里云上开通短信服务,然后在AccessKey里面
在这里插入图片描述
设置用户和用户组,并把用户加入到用户组里面
在这里插入图片描述
然后创建一个key
在这里插入图片描述
密码一定要事先记住,后面是不会在显示密码的

然后在用户组里面添加短信权限管理
在这里插入图片描述

再去短信服务里面添加签名和模板
在这里插入图片描述
一定要注意用词,不然阿里不会通过的

到这里所需阿里的东西都差不多准备好了,在快速学习里面有一个查看demo,可以看到开发例子

开发

新建service

@Service
public class MessageServiceImpl implements MessageService {
   @Override //phoneNumbers 电话号码  templateCode 模板code  code 放的验证码
   public boolean sendMessage(String phoneNumbers, String templateCode, Map<String, Object> code) {
      //连接阿里云
      DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "{AccessKey}", "{AccessKeyPassword}");
      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", phoneNumbers);
      request.putQueryParameter("SignName", "{注册的签名}");
      request.putQueryParameter("TemplateCode", templateCode);

//    构建一个短信验证码
//    Map map=new HashMap();
//    map.put("code",1212);
      request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));
      try {
         CommonResponse response = client.getCommonResponse(request);
         return response.getHttpResponse().isSuccess();
      } catch (ServerException e) {
         e.printStackTrace();
      } catch (ClientException e) {
         e.printStackTrace();
      }
      return false;
   }
}

新建controller调用service

@RestController
public class SendMessageController {
   @Autowired
   private MessageService messageService;

   @Autowired
   private RedisTemplate<String, String> redisTemplate;

   @GetMapping("/sendMessage/{phoneNumbers}")
   public String sendMessage(@PathVariable("phoneNumbers") String phoneNumbers) {
      //判断手机号验证码是否过期
      String code = redisTemplate.opsForValue().get(phoneNumbers);
      if (!StringUtils.isEmpty(code)) {
         return phoneNumbers + ":" + code + "已存在,还没有过期";
      }

      //生成验证码
      code = UUID.randomUUID().toString().substring(0, 4);
      Map<String, Object> map = new HashMap();
      map.put("code", code);

      boolean isSend = messageService.sendMessage(phoneNumbers, "{模板code}", map);
      if (isSend) {
         redisTemplate.opsForValue().set(phoneNumbers, code, 5, TimeUnit.MINUTES);
         return phoneNumbers + ":" + code + "发送成功";
      } else {
         return phoneNumbers + ":" + code + "发送失败";
      }
   }
}

前端调用后手机就会收到验证码了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值