SpringBoot 实现手机发送短信验证码
Posted Yan Yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 实现手机发送短信验证码相关的知识,希望对你有一定的参考价值。
内容
一、手机发送短信
1. 前端界面代码
10秒内不能重复发送验证码
//短信发送
$('.vcode-send').click(function () {
if ($(this).hasClass('disabled')) {
} else {
var self = $(this);
var count = 10;
self.addClass('disabled');
self.text(count + '秒后重新获取');
var timer = setInterval(function () {
count--;
if (count > 0) {
self.text(count + '秒后重新获取');
} else {
clearInterval(timer);
self.text('重新获取验证码');
self.removeClass("disabled");
}
}, 1000);
var phone = $("#phone").val();
$.get(domainUrl + "/users/sendVerifyCode", {phone:phone}, function (data) {
console.log(data);
if(data.code == 200){
popup("发送成功")
} else {
popup(data.msg);
}
});
}
});
2. UserInfoController 控制器
package com.yy.springboot.controller;
@RestController
@RequestMapping("/users")
public class UserInfoController {
@Autowired
private IUserInfoService userInfoService;
@GetMapping("/sendVerifyCode")
public JsonResult<UserInfo> sendVerifyCode(String phone) {
return userInfoService.sendVerifyCode(phone);
}
}
3. application.properties 配置类文件
找一个发短信的服务商,如去京东万象找一个短信服务商,根据它提供的接口来实现发送短信功能;
转码结果:
sms.url=https://way.jd.com/kaixintong/kaixintong?mobile={0}&content=\\u3010\\u51ef\\u4fe1\\u901a\\u3011\\u60a8\\u7684\\u9a8c\\u8bc1\\u7801\\u662f\\uff1a{1}&appkey={2}
sms.appkey=f3c4f8c6845efddac0420ebbfeae256f
4. 具体实现
// URL 和 appkey 是上面配置文件中的URL和appkey
@Value("${sms.url}")
private String url;
@Value("${sms.appkey}")
private String appkey;
@Override
public JsonResult<UserInfo> sendVerifyCode(String phone) {
// 1、创建随机验证码(4位)
String code = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 4);
// 2、发送短信
// java 如何发起 Http 请求
// 参数1:请求 url,参数2:响应值类型对象(将返回值转换成什么类型对象)
// 参数3:路径上的参数值
RestTemplate restTemplate = new RestTemplate();
String message = restTemplate.getForObject(url, String.class, phone, code, appkey);
System.out.println("message = " + message);
if (!message.contains("Success")) {
throw new LogicException("短信发送失败");
}
// 4、缓存验证码-以 phone 为 key,code 为 value
return userInfoRedisService.sendVerifyCode(phone, code);
}
总结
上面就是手机发送短信验证码的总结了,代码仅供参考,欢迎讨论交流。
以上是关于SpringBoot 实现手机发送短信验证码的主要内容,如果未能解决你的问题,请参考以下文章