登录 - 榛子云短信用户系统 (zhenzikj.com)

上面是登录榛子云短信验证平台的入口,此平台的短信大概为3.1分一条短信

如何与spring boot进行集成呢,我以注册为例来慢慢讲解

1.注册号榛子云账号并充值可发送短信

2.在项目pom.xml导入jar包

<!-- 榛子短信--><dependency><groupId>com.zhenzikj</groupId><artifactId>zhenzisms</artifactId><version>2.0.2</version></dependency><!--转换json数据--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>

3.编写一个contorller,用与调用榛子云短信验证平台发送短信

package com.huamei.trade.controller;import com.alibaba.fastjson.JSONObject;
import com.zhenzi.sms.ZhenziSmsClient;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;@Controller
public class SendCodeController {//短信平台相关参数//这个不用改private String apiUrl = "https://sms_developer.zhenzikj.com";//榛子云系统上获取//AppIdprivate String appId = "112617";//AppSecretprivate String appSecret = "53846b68-f624-4d67-807a-4be3279612b3";@ResponseBody//这个注解是mvc的拦截器的应该通过注解,可不要@RequestMapping("/sendCode")public String sendCode(String memPhone) {try {//短信发送需要的参数是json类型JSONObject json;//随机6位生成验证码String code = String.valueOf(ThreadLocalRandom.current().nextInt(100000, 1000000));//将验证码通过榛子云接口发送至手机ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);//参数类型Map<String, Object> params = new HashMap<>();//前台输入的手机号params.put("number", memPhone);//这个模板id对应的是榛子云个人中心的模板idparams.put("templateId", 10777);//参数占位符,不同的模板有不同的参数个数 目前用的模板有两个参数String[] templateParams = new String[2];//第一个参数 随机生成的六位验证码templateParams[0] = code;//第二个参数 x分钟templateParams[1] = "5";//把参数占位符放在整体参数中params.put("templateParams", templateParams);//执行发送短信String result = client.send(params);System.out.println(result);json = JSONObject.parseObject(result);
//            发送短信失败if (json.getIntValue("code") != 0) {return null;}return code;} catch (Exception e) {e.printStackTrace();return "code not found";}}/*** 跳转发送短信页面** @return java.lang.String**/@RequestMapping("/goSendCode")public String goSendCode() {return "/sendCode";}}

4.编写前台,调用contorller发送验证码

<!DOCTYPE html>
<html>
<head><#include "common/head.html"><link rel="stylesheet" type="text/css" href="css/public.css"/><link rel="stylesheet" type="text/css" href="css/login.css"/><script type="text/javascript" src="js/jquery-1.12.4.min.js"></script><script type="text/javascript" src="js/md5.js"></script><script>// 获取后台传输过来的验证码let codeNumber = "";$(function () {$("#reg").click(function () {//获取表单的值let mobile = $("#mobile").val();let password1 = $("#pwd1").val();let password2 = $("#pwd2").val();let nickname = $("#name").val();let code = $("#code").val();//密码一致判断if (password1 !== password2) {alert("密码不一致,重新输入");return;}//加密盐 加密let salt = 'f1g2h3j4';let temp = salt.charAt(1) + "" + salt.charAt(5) + password1 + salt.charAt(0) + "" + salt.charAt(3);//使用md5加密let pwd = md5(temp);// 验证码判断if (code != codeNumber) {alert('验证有误');return;}//掉用contorller的userReg注册$.ajax({url: '/user/userReg',data: {id: mobile,nickname: nickname,password: pwd},type: 'post',dataType: 'json',success: function (resp) {if (resp.code != 200) {alert(resp.msg);} else {location.href = "/page/login.html";}}})})});// -----------------------//发送验证码按钮function sendCode() {//获取手机号 判断手机号是否输入let memPhone = $("#mobile").val();if (memPhone == '' || memPhone.length != 11) {alert("请输入正确的手机号!");return;} else {timer();//手机号输入,调用contorller/sendcode方法发送验证码$.ajax({type: 'get',url: '/sendCode',data: {memPhone: memPhone,},dataType: 'json',success: function (data) {//获取后台验证码codeNumber = data;if (data) {} else {alert("获取验证码失败");}},error: function (data) {alert('连接超时!');},});}}let wait = 60;//倒计时 设置按钮样式function timer() {if (wait == 0) {$("#sendBtn").val("获取验证码");$("#sendBtn").removeAttr("disabled");$("#sendBtn").css("border-color", "1e9fff").css("background", "#ffffff").css("cursor", "pointer");wait = 60;} else {$("#sendBtn").attr("disabled", "true");$("#sendBtn").css("border-color", "fbfbfb").css("background", "#ccc").css("cursor", "not-allowed");$("#sendBtn").val(wait + "秒后重发");wait--;//等待一秒setTimeout(function () {timer()}, 1000);}}//  ------------------------------</script><style>#sendBtn {height: 40px;width: 100px;margin-left: 12px;margin-top: 10px;font-size: 14px;}</style></head>
<body>
<!-------------------reg-------------------------->
<div class="reg"><form  method="post"><h1><a href="${ctx}/"><img src="img/temp/pingpai.png" width="160px" height="70px" ></a></h1><p style="font-size:14px;" > 用户注册</p><p><input style="font-size:14px;" type="text" id="mobile"  name="mobile" placeholder="请输入电话"></p><p><input style="font-size:14px;" type="text" id="name"  name="name" placeholder="请输入昵称"></p><p><input style="font-size:14px;" type="password" id="pwd1" name="pwd1" placeholder="请输入密码"></p><p><input style="font-size:14px;" type="password" id="pwd2" name="pwd2" placeholder="请确认密码"></p><p class="txtL txt"><input style="font-size:14px;" class="code" type="text" id="code" placeholder="验证码"><input type="button"  value="获取验证码" id="sendBtn" onclick="sendCode()" ></p><p><input type="button"  id="reg" value="注册"></p><p class="txtL txt">完成此注册,即表明您同意了我们的<a href="/page/tiaoli.html"><使用条款和隐私策略></a></p><p class="txt"><a href="${ctx}/page/login.html"><span></span>已有账号</a></p><!--<a href="#" class="off"><img src="img/temp/off.png"></a>--></form>
</div>
</body>
</html>

前台我采用的是free marker,如果有语法不懂得可去我博客看free marker讲解

free make详解https://blog.csdn.net/weixin_67150631/article/details/127840284?spm=1001.2014.3001.5501

效果演示

注意:

要看清出自己得appid和appseret,还有自己得模板id,短信呢挺贵得,注意测试得时候慢慢来

榛子云短信验证平台与springboot集成的短信验证相关推荐

  1. SpringBoot集成JWT实现token验证

    Jwt全称是:json web token,以JSON对象的形式安全的传递信息.它将用户信息加密到token里,服务器不保存任何用户信息.服务器通过使用保存的密钥验证token的正确性,只要正确即通过 ...

  2. 易信公众平台开发从入门到精通之开发验证

    开发者模式 在"高级功能"页面中,我们首先要开启"开发者模式",如下图: 点击"查看详情"按钮,打开界面如下: 这里我们需要填写URL和To ...

  3. 阿里云开通maven仓库服务及springboot集成

    1.登录阿里云,创建企业 2.点击私有仓库进入下面这个页面 3.项目集成私有仓库 a.直接下载settings.xml文件,替换maven的conf中的该文件 b.配置好了settings.xml后, ...

  4. 注册app短信验证平台_短信验证码平台能免费测试吗?怎么测试?

    短信验证码的运用在用户注册.用户登录.忘记密码.支付确认.登录异常等等场景,可以说很多企业/网站都会需要用到短信验证码.那对于有短信验证码需求的企业来说,在挑选短信验证码平台时,比较关心的一点就是短信 ...

  5. 为什么越来越多的企业选择短信接口平台?

    一.操作方便 对于企业来说,短信接口具备最大程度的兼容性,不受语言和运行环境限制,对接简单.就算是不会对接的企业,短信服务商也能提供技术支持,尽快帮助完成验证码短信接口的对接. 二.数据真实性高 短信 ...

  6. 怎么免费测试短信验证码平台的安全稳定性?

    如何测试短信验证码平台的安全和实用性?因为用户对于陌生事物,总是有着一定的警惕心理!而且再加上平台大多数属于"先充值后使用"付费模式,一些用户就担心,短信验证码发送成功率低怎么办? ...

  7. 短信优惠券平台的使用

    短信优惠券平台的使用 短信优惠券平台管理电子优惠券的发放.认领.消费兑换等全过程. 工具/原料 · 速达账号 · 短信优惠券平台 方法/步骤 1. 1 短信优惠券平台登录 2. 2 短信优惠券创建 3 ...

  8. 宜信智能监控平台建设实践|分享实录

    摘要:介绍宜信智能运维平台UAVStack的设计思想.技术架构和核心功能,及落地实践经验. 内容来源:宜信技术学院第6期技术沙龙-线上直播|宜信智能监控平台建设实践 主讲人:宜信高级架构师 & ...

  9. 宜信智能监控平台建设实践

    摘要:介绍宜信智能运维平台UAVStack的设计思想.技术架构和核心功能,及落地实践经验. 内容来源:宜信技术学院第6期技术沙龙-线上直播|宜信智能监控平台建设实践 主讲人:宜信高级架构师 & ...

最新文章

  1. 诺基亚发布首款高功率小基站SCORE以及Flexi Zone LWA支持能力
  2. jQuery Autocomplete
  3. linux php 升级5.3,Linux php5.2.10升级到PHP5.3.29
  4. 【MyBatis】Mybatis实现分页效果
  5. dbms标识符无效_DBMS中的嵌套查询,相关的嵌套查询和集合比较运算符
  6. ruby hash方法_Ruby中带有示例的Hash.rassoc(obj)方法
  7. CentOS7安装mysql8并配置
  8. Java JDBC Statement
  9. 掌握Android阅读源码的两种简单方式
  10. matlab 加权残值法,1987_03固体力学加权残值法_10217273.pdf
  11. SketchUp资源网站
  12. 在计算机操作中粘贴的快捷键是什么,键盘按什么键复制粘贴 键盘上复制粘贴快捷键是哪个键...
  13. 被远程之后,键盘失灵问题
  14. 中文论文网站、英文论文网站、专业领域论文网站(学术狗必备的21个论文网站)
  15. Java基础9----运算符2(关系,逻辑运算符)
  16. 易保全:览契约文化,传契约精神
  17. 追风筝的人 第一章
  18. Navicat还原nb3备份文件步骤
  19. 助力老旧小区安防智能化升级
  20. 猫狗大战----类的实例化和继承,带你看懂类方法的使用

热门文章

  1. 报错:npm ERR code EPERM
  2. 遥感影像云检测-传统方法-:Haze Optimized Transformation(HOT)方法
  3. 几种等等概率抽样方法
  4. 使用git强行切换分支
  5. 湿度传感器 DHT11
  6. 数据分析八大模型:详解PEST模型
  7. ath9k驱动内的数据发送过程
  8. Spring Boot 和 Spring 有什么区别
  9. python列表推导式是什么
  10. answer的汉语_Answer的中文意思是什么?