超级详细的实现阿里云短信服务的小案例(最新版)含案例代码

今天我们来说说如何用java代码实现短信验证码的发送,这里用于注册时的短信验证哦

首先我们先需要拥有阿里云账号,没有的话用支付宝也能登陆的哟!记得实名认证就好.注册部分我就略过了哈,这里我们讲讲流程
1.打开阿里云首页,用自己的账户登陆进去
https://www.aliyun.com
2.然后我们到了这个页面
在这里插入图片描述

3.在搜索输入框中输入短信服务,我们点进入.
在这里插入图片描述
4.点击免费开通.
在这里插入图片描述5.这里就从免费开通换成了管理控制台
在这里插入图片描述6.点击管理控制台
在这里插入图片描述打钩确认!
7.点击国内消息
在这里插入图片描述8.这里我们需要申请这两个内容
在这里插入图片描述模版管理:显示发送短信验证码的内容是什么
比如说:
在这里插入图片描述步骤:
点击添加模版
在这里插入图片描述在这里插入图片描述一般我们选择第一个:
1.模版名称:
然后给我们的短信模版起一个名字,这个不能乱写,需要有点实际意义
比如说:学习验证码使用
2.模版内容:
比如说
您正在申请手机注册,验证码为${code},5分钟内有效
**3.申请说明:**说明你要干什么
比如说:为了学习阿里云的短信发送方式
在这里插入图片描述点击提交:等待审核
在这里插入图片描述签名管理
点击添加签名
在这里插入图片描述在这里插入图片描述签名:需要有实际的意义
比如说我的在线教育网站
适用场景:勾选验证码
申请说明:

在这里插入图片描述点击确定,等待审核.这部分可能会被驳回,需要修改签名继续申请
在这里插入图片描述
项目中代码的实际应用:
在需要用到短信服务的项目中引入依赖


<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
    </dependency>
</dependencies>

然后我们在controller中写代码:

@RestController
@RequestMapping("/edumsm/msm")
@CrossOrigin
public class MsmController {
    @Autowired
    private MsmService msmService;
    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    //发送短信的方法,短信都是要发送到手机上的,所以会需要手机号
    @GetMapping("send/{phone}")
    public R sendMsm(@PathVariable String phone){
        //1.从redis中获取验证码,如果获取到则直接返回
        String code = redisTemplate.opsForValue().get(phone);
        if (!StringUtils.isEmpty(code)){
            return R.ok();
        }

        //2.获取不到的话,那直接生成发送


        //生成随机的值,传递给阿里云进行发送
        code = RandomUtil.getSixBitRandom();
        Map<String,Object> param = new HashMap<>();
        param.put("code",code);
        //调用service发送短信方法
        boolean isSend = msmService.send(param,phone);
        if (isSend){
            //发送成功,把发送成功的验证码放到redis中去,同时设置有效时间

            redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);//设置了五分钟的有效时长
            return R.ok();
        }else {
            return R.error().message("短信发送失败");
        }
    }
}

service代码:

public interface MsmService {
    boolean send(Map<String, Object> param, String phone);
}

实现类代码:

@Service
public class MsmServiceImpl implements MsmService {
    @Override
    //发送短信的方法
    public boolean send(Map<String, Object> param, String phone) {
        if(StringUtils.isEmpty(phone)) return false;

        DefaultProfile profile =
                DefaultProfile.getProfile("cn-hangzhou", "LTAI4G9fwr6xgpdCUE3qzR6Q", "hZj0CptsrWStUcse6FYQ5DrMid6WsO");
        IAcsClient client = new DefaultAcsClient(profile);
        //设置相关的参数,固定的参数
        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com");
        request.setVersion("2017-05-25");
        request.setAction("SendSms");

        //设置发送的参数
        request.putQueryParameter("PhoneNumbers",phone);
        request.putQueryParameter("SignName", "欣怡的项目实战在线网站");//签名
        request.putQueryParameter("TemplateCode", "SMS_199796299");//模版
        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param));//验证码数据,转换json数据传递
        //最终发送
        try {
            CommonResponse commonResponse = client.getCommonResponse(request);
            boolean success = commonResponse.getHttpResponse().isSuccess();
            System.out.println(commonResponse.getData());
            return success;
        } catch (ClientException e) {
            e.printStackTrace();
            return false;
        }
        //验证码的过期问题用redis实现
    }
}

用swagger测试
在这里插入图片描述redis中也存在了验证码.
在这里插入图片描述
在这里插入图片描述短信验证码,小案例成功实现.

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值