maven|SpringBoot集成手机验证码业务(榛子云短信服务)

一、手机验证码的作用 举个例子:如果你开发了一个系统,那这个系统肯定会有登录功能对吧?那如果说你的密码忘记了呢?
这个时候我们的解决方式是:1、联系管理员;2、再注册一个(emmm,那我以前的资料就没了呀);3、对于管理员自己而言,手动修改数据库或者查看数据库(万一密码加密呢)
为了解决这么个事情,所以我们就引入了手机验证码的功能。
作用:
1、帮助用户直接通过手机号码进行登录,从而解决密码设置繁琐、忘记密码等问题,让账号的登录变得更加方便快捷。同时对于记不住自己的设定账号的用户,直接通过手机+手机验证码的方式登录,对于用户来说更加便利。
2、帮助用户进行交易的确认。比如网购、订购套餐等等,都可能会碰到需要接收手机验证码的操作。通过手机验证码,可以再次确认用户是否是处于自身的意愿去进行的交易,是否是本人进行的交易,是否对交易的内容有充分了解。
二、短信服务的选择 国内有一大堆短信认证的平台,就我所知道的。有腾讯短信服务、阿里短信服务(要求网站上线,或者是企业账号)、榛子云(可以个人体验)等。
三、我选择了榛子云 主要原因有三个:
1、操作简单,可方便快捷实现;
2、支持个人体验套餐
3、20块钱500条信息(还算能接受)
弊端:
个人使用的话,人工客服不理人,技术支持不理你。而且一个很重要很重要的点:在一年里面要用完他,不然就用不了,剩余短信不退款。可恶!!反正我是后面才知道的。但是呢,如果你要玩玩这个功能,也就只能权衡一下利弊。对吧,毕竟是开发者嘛,练练手还是没问题的。
四、注册、登录、充值 1、http://sms_developer.zhenzikj.com/zhenzisms_user/register.html 访问这个网址,至于注册的流程,我就不细说了,应该大家都会操作的。(略)

2、登录
如果你购买了,这里就会显示短信条数
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

3、充值
这里最低充值是20块钱,充值完成,就可以看到上面那张图啦
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

五、查看SDK 下载 点击进入这个榛子-云短信
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

我们用的是spring boot框架进行集成开发,因此我们可以点击Maven,我们会得到下面这个依赖:

com.zhenzikj zhenzisms 2.0.2


文档也给我们提供了一个js倒计时demo,我们也可以下载下来。解压缩后页面很简洁:
【maven|SpringBoot集成手机验证码业务(榛子云短信服务)】maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

六、开始搭建Spring Boot环境1、在idea里面
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片
这里面我使用的是jdk8,打包成war,你可以根据你的情况自行改动
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

选择完成之后,点击finish。
2、添加依赖
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

七、进行yaml文件配置 在main下的resource文件下,新建一个application.yaml (温馨提示:记得key-value之间 :有空格)
sms: apiUrl: https://sms_developer.zhenzikj.com appId: appId(你的appid) appSecret: 你的应用签名 timeOut: 3 codeLength: 6

那appId和appSecret在哪里获取呢?
http://sms_developer.zhenzikj.com/zhenzisms_user/index.html
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

八、编写配置类:
新建一个main下创建一个config包:新建一个类ZhenziCodeConfig(随便命名)
package config; import com.zhenzi.sms.ZhenziSmsClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import java.util.HashMap; import java.util.Map; import java.util.Random; @Configuration public class zhenziCode {@Value("${sms.apiUrl}") private String apiUrl; @Value("${sms.appId}") private String appId; @Value("${sms.appSecret}") private String appSecret; public String printRandom(){ //取随机产生的验证码(4位数字) Random rnd = new Random(); int randNum = rnd.nextInt(8999) + 1000; //将整型数字转化成字符串 String randStr = String.valueOf(randNum); return randStr; }public String sendMessage(String randNum,String phoneNum) throws Exception { ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret); Map params = new HashMap(); params.put("number", phoneNum); params.put("templateId","8345"); String[] templateParams = new String[2]; templateParams[0] = randNum; templateParams[1] = "5分钟"; params.put("templateParams", templateParams); String result = client.send(params); return result; }}

九、新建controller类 1、通过随机数生成验证码并且保存在session里面(可以用redis设置过期时间)
package cn.com.sise.book.controller; import cn.com.sise.book.config.zhenziCode; import cn.com.sise.book.domain.phone; import com.alibaba.fastjson.JSON; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; @Controller public class PhoneNumContoller {@Autowired private zhenziCode zhenziCode; /*** * 验证手机号码 并且发送验证码 * @param request * @param phoneNum * @return * @throws Exception */ @ResponseBody @RequestMapping(value = "https://www.it610.com/PhoneNumCode",method = RequestMethod.POST) public String toCode(HttpServletRequest request, String phoneNum) throws Exception { HttpSession session = request.getSession(true); String random = zhenziCode.printRandom(); session.setAttribute("randStr",random); System.out.println("sendCode:"+random); System.out.println(phoneNum); return zhenziCode.sendMessage(random,phoneNum); } }

2、新建一个跳转到index.html的试图控制器
@Controller public class IndexController { @RequestMapping("/") public String toIndex(){ return "index"; } }

十、将刚才下载的js代码复制到 resource 下面: 资源放在static,页面放在templates里面
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

注意修改index.html的资源路径
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

十一、编写index页面的请求地址maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

$(function(){ $(".captchaBtn").on("click", function(){ let that = this; let phone =$("#phoneNum").val(); if (phone==""||phone==null || phone.length<11 || phone.length>11){ return alert("请正确的电话号码") } $.post("/PhoneNumCode",{ "phoneNum": phone },function (res){ res = JSON.parse(res) if (res.code==0){ countdown(that); return alert(res.data) } return alert(res.data); }) }) });

maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片


maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

至此,我们就已经完成了整个手机验证码的验证功能。下面附一张错误码
maven|SpringBoot集成手机验证码业务(榛子云短信服务)
文章图片

哈哈,最后,你学会了吗?如果有问题可以评论去见哦!
如果你需要源码,可以进入我的主页去下载(免费)


    推荐阅读