开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):整合阿里云短信进行短信发送(2)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11445
整合阿里云短信进行短信发送(2)
内容介绍
一.Redis 解决验证码有效时间问题
二.测试阿里云短信服务功能
try {
//最终发送
CommonResponse response=client.get CommonResponse (request);
boolean success = response.getHttpResponse().isSuccess();
return success;
}catch(Exception e) {
e.print.StackTrace();
return false;
在 msm.controller 中,
手机验证码中通常有这样一句话,验证码在多少多少分钟内有效。
那在程序中应该如何表达在五分钟内有效?
一.Redis 解决验证码有效时间问题
发送成功以后,把验证码放到 redis 中,并且设置有效时间。取的时候就直接取出来,如果不能直接取,再用阿里云发送。
上次课用 redis 是为了缓存,我们这次用 redis 是为了设置有效时间,也就是说用 redis 的方式和之前相比也发生了改变。
在 string boot 整合 redis 的时候,它封装了一个对象。
@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 如果 redis 获取不到,进行阿里云发送
//生成随机值,传递阿里云进行发送
code =RandomUtil.getFourBitRandom();
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,I:5,TimeUnit. MINUTES);
}else{
return R.ok(); I
return R.error().message(“短信发送失败”)
二.测试阿里云短信服务功能
打开 service_msm 中的 application.properties,看到目前的端口号是8005。
在启动类 MsmApplication 中,右键点击 Run‘MsmApplication’启动 swagger 测试。
启动之后,可以看到控制台中列出发送量统计、费用统计等等。
在搜索中直接输入地址 localhost:8005/swagger-ui.html,然后按回车键进入 swagger 页面。
点击蓝色处方法进入,在 phone 处输入手机号,点击 try it out,就会把通过工具类生成的四位验证码发送到手机上,手机收到验证码后,阿里云发送量统计中会有显示。
验证码会有提示信息,前面是【】,里面是签名名称,然后是模板内容。
而后把这个功能整合到注册或登录中,在注册或登录的时候发送验证码。