Springboot实现短信登录验证

article/2025/9/15 20:02:16

Springboot学习笔记——Java实现短信登录验证功能--Servlet/SSM/SpringBoot都可以用

小白记录一下短信验证登入的实现,方便以后可以拿来直接用。
发短信平台:互亿无线 官网地址

在这里插入图片描述

登入注册啥的就不说了,新人注册会送十条短信验证,想要buy一些学习用的话 也很便宜,就不多说了
在这里插入图片描述
在这里插入图片描述
我们主要需要的就是这个APIID和APPKEY,到时候工具类需要用。

pom工程需要导入两个依赖:

     <!--发送手机验证码--><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency>

接下来贴上工具类代码:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;import java.io.IOException;public class SendSMS {private static String Url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";public static int sendYzCode(String phone) {HttpClient client = new HttpClient();PostMethod method = new PostMethod(Url);client.getParams().setContentCharset("GBK");method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=GBK");int mobile_code = (int)((Math.random()*9+1)*100000);String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");NameValuePair[] data = {//提交短信new NameValuePair("account", "填你的APIID"), //查看用户名是登录用户中心->验证码短信->产品总览->APIIDnew NameValuePair("password", "填你的APPKEY"),  //查看密码请登录用户中心->验证码短信->产品总览->APIKEY//new NameValuePair("password", util.StringUtil.MD5Encode("密码")),new NameValuePair("mobile", phone),new NameValuePair("content", content),};method.setRequestBody(data);try {client.executeMethod(method);String SubmitResult =method.getResponseBodyAsString();//System.out.println(SubmitResult);Document doc = DocumentHelper.parseText(SubmitResult);Element root = doc.getRootElement();String code = root.elementText("code");String msg = root.elementText("msg");String smsid = root.elementText("smsid");System.out.println(code);System.out.println(msg);System.out.println(smsid);if("2".equals(code)){System.out.println("短信提交成功");return mobile_code;}} catch (HttpException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}return 0;}
}

工具类只需要把APIID和APPKEY替换一下就可以用啦。

接下来贴前端代码

      <div class="login-style"><dl><dd><input name="phone" type="text" id="phone" placeholder="您的手机号码"/></dd></dl><!--<dl id="yz-code" style="display: none;"><dd><input type="text" id="txtCode2" name="txtCode2" style="width: 133px; margin-right: 10px;" placeholder="验证码" /><img id="Img1" src="" width="90" height="34" title="点击换一个" style="vertical-align: middle; margin-top: -4px;" onclick="this.src='/ImgCode.aspx?t='+Math.random()*100" /></dd></dl> --><dl><dd><input type="text" id="code" name="code" onkeydown="enterHandler(event)" style="width: 133px;"placeholder="短信验证码"/><input type="button" id="zphone" class="btn_mfyzm"value="获取手机验证码" /></dd></dl><div class="remember"><input type="checkbox" id="issave1" checked/><label for="issave1">下次自动登录</label></div><div class="tishi"></div><button type="button" id="dynamicLogon" style="outline:none">登 录</button></div>

JS代码:


<script type="text/javascript">$(function () {$("#zphone").click(function () {//先判断是否输入手机号码,再判断手机号格式是否正确,最后判断是否是已经注册过的手机号var phone=$("#phone").val();if(phone==null||phone==""){// $("#msg").text("手机号不能为空").css("color","red");Tip('手机号不能为空!');$("#phone").focus();}else if(!(/^1[3456789]\d{9}$/.test(phone))){// $("#msg").text("手机号格式不正确").css("color","red");Tip('手机号格式不正确!');$("#phone").focus();}else{$.ajax({url:'user/checkPhone',type:'post',data:{"phone":phone},dataType:'json',success:function (data) {if(data){//发送验证码alert("通过啦!准备执行发送验证码方法");sendCode(phone);}else{Tip('手机号尚未注册,请注册后再登陆!')// $("#msg").html("<a href='login.html'>手机号尚未注册,请注册后再登陆</a>");}}});}})//登陆$("#dynamicLogon").click(function () {var phone=$("#phone").val();var code=$("#code").val();$.ajax({url:'toPhoneLogin',type:'post',data:{"code":code,"phone":phone},dataType:'json',success:function (data) {if(data){//登陆成功,网站首页window.location.href="home";}else{//失败Tip('登陆失败,请重试')// $("#msg").text("登陆失败,请重试").css("color","red");}}})});})function sendCode(phone) {$.ajax({url:'sendCode',type:'post',data:{"phone":phone},dataType:'json',success:function (data) {if(data){// $("#msg").text("验证码发送成功").css("color","green");Tip('验证码发送成功!');}else{// $("#msg").text("验证码发送失败,请重试").css("color","red");Tip('验证码发送失败,请重试!');}}})}
</script>

后台代码:

 /*** 发送手机验证码*/@RequestMapping("/sendCode")public void sendCode(HttpServletRequest request, HttpServletResponse response) throws IOException {String phone = request.getParameter("phone");int code = SendSMS.sendYzCode(phone);if (code != 0) {session = request.getSession();session.setAttribute("yzcode", phone + "#" + code);//1227346764#8765response.getWriter().print(true);} else {response.getWriter().print(false);  //没短信了}}@RequestMapping("/toPhoneLogin")public void toPhoneLogin(HttpServletRequest request, HttpServletResponse response) throws IOException {String code = request.getParameter("code");String phone = request.getParameter("phone");String code1 = phone + "#" + code;//页面提交的String code2 = (String) session.getAttribute("yzcode");//session中获取到的if (code1.equals(code2)) {//登陆成功,将登陆的用户保存到session中//根据用户的电话获取登陆用户User loginUser = userService.getUserByPhone(phone);
//            request.getSession()session.setAttribute("user", loginUser);response.getWriter().print(true);} else {response.getWriter().print(false);}}

最后贴上效果图
在这里插入图片描述

在这里插入图片描述
至此短信登录功能就搞定了


http://chatgpt.dhexx.cn/article/FmWQS1Ay.shtml

相关文章

java WEB调用秒嘀科技短信验证接口(实现短信验证登录)

java WEB调用秒嘀科技短信验证接口&#xff08;实现短信验证登录&#xff09; 前言注册秒嘀云账号登录秒嘀云官网 代码 前言 短信验证登咱就不多说了&#xff0c;为什么推荐用秒嘀的呢&#xff0c;应为他会送你10元钱&#xff0c;对于新手来说10元钱&#xff0c;足够你玩了。但…

Android利用mob实现短信验证登录

首先要去官网申请一个应用&#xff0c;拿到对应的APPKEY以及APPSECRET 附上直通车链接MobTech 申请应用基本是秒批&#xff0c;然后就可以得到应用的APPKEY以及APPSECRET 然后就是查看官方的文档 直接跟着步骤走&#xff0c;可以不用手动下载sdk&#xff0c;导入这些它自动会帮…

微信小程序短信验证登录

首先小程序wxml页面 <!--pages/logins/logins.wxml--> <view class"container"><view class"title">登录</view><form catchsubmit"login"><view class"inputView"><input class"inputT…

Springboot实现短信验证登录

一、介绍 使用短信验证登录也是现在实际项目中普遍使用的一种登录, 二、实际的操作流程 1.用户在前端页面输入手机号码之后,点击发送验证码 2.前端将手机号传给后端 3.后端生成一个6为的随机数通过短信发送给用户,之后将手机号设为key,验证码设为value存入redis缓存中…

html短信验证登录

最近在做项目中遇到了一个问题&#xff0c;做的是一个后台管理。都知道&#xff0c;后台是需要一定安全性的&#xff0c;所以一定要有登录这个功能的。然而登录这个功能&#xff0c;又有一个不可或缺的因素&#xff0c;那就是验证登录。不论是图形验证也好&#xff0c;还是什么…

spring security——短信验证码登录(四)

一、导读 短信登录和用户名密码登录的逻辑是不同的&#xff0c;Spring Security 框架中实现的是用户名密码的登录方式。现在我们就模仿它的原理来加入短信登录的认证&#xff08;注意不是验证&#xff09;&#xff0c;实现右边的。 之前写的图形验证码是在 UsernamePasswordAut…

雅克比矩阵求导推导

首先&#xff0c;引入雅克比矩阵公式&#xff1a; J [ u 1 u 2 ⋯ u n e 1 e 2 ⋯ e n ] \mathbf{J}\left[\begin{array}{c} \begin{array}{lll}\mathbf{u}_{1} & \mathbf{u}_{2} & \cdots & \mathbf{u}_{n}\end{array} \\ \begin{array}{lll}\mathbf{e}_{1} &…

矩阵求导公式

转自&#xff1a;http://blog.sina.com.cn/s/blog_4a033b090100pwjq.html 求导公式(撇号为转置&#xff09;&#xff1a; Y A * X --> DY/DX A Y X * A --> DY/DX A Y A * X * B --> DY/DX A * B Y A * X * B --> DY/DX B * A 乘积的导数 d(f*g)/dx(df/dx)…

矩阵求导法则的总结

最重要的写在前面&#xff1a; 进行更新&#xff1a;随着理解的加深&#xff0c;我发现之前写的有些问题&#xff0c;重新写一下吧 矩阵求导要分成两类&#xff0c;第一类是用在向量函数f(x)里&#xff0c;比如要在x0处展开&#xff0c;所以需要计算该点处的雅可比这些&#…

-矩阵求导-

一、为什么需要矩阵求导 参数的向量化&#xff1a; 向量化会使代码、式子更加简洁&#xff1b; 使用向量化代替for循环&#xff0c;向量化能够加速你的代码&#xff1b;求导在优化算法中的广泛应用&#xff1a; 优化算法需要反向传播&#xff0c;需要对参数矩阵进行求导 二、…

矩阵求导简析

大家好&#xff0c;这是我的第一篇博客。 矩阵求导&#xff08;Matrix Derivation&#xff0c;或者Matrix Differential&#xff09;&#xff0c;在机器学习、图像处理、最优化领域经常会遇到。其本质是多元变量的微积分&#xff0c;只是把求导应用在了矩阵上&#xff0c;不同在…

矩阵求导法则

转载自&#xff1a;https://blog.csdn.net/dinkwad/article/details/72819832 矩阵求导的技术&#xff0c;在统计学、控制论、机器学习等领域有广泛的应用。鉴于我看过的一些资料或言之不详、或繁乱无绪&#xff0c;本文来做个科普&#xff0c;分作两篇&#xff0c;上篇讲标量…

矩阵求导总结

文章目录 1.分子为标量1.1 ∂ 标量 ∂ 标量 \frac{\partial 标量}{\partial标量} ∂标量∂标量​1.2 ∂ 标量 ∂ 向量 \frac{\partial 标量}{\partial向量} ∂向量∂标量​1.3 ∂ 标量 ∂ 矩阵 \frac{\partial 标量}{\partial矩阵} ∂矩阵∂标量​ 2.分子为向量2.1 ∂ 向量…

矩阵求导方法

矩阵求导方法 在机器学习过程中&#xff0c;我们经常会对矩阵进行相关的操作&#xff0c;现对矩阵求导方法进行概况与推导。 首先总结矩阵求导的本质&#xff0c;即矩阵A中每个元素对矩阵B中每个元素求导。我们先从宏观上理解这个公式&#xff0c;即从求导后元素的个数来理解…

矩阵求导

一、矩阵和向量求导 参考地址&#xff1a;https://cloud.tencent.com/developer/article/1668818 求导公式大全&#xff1a;https://cloud.tencent.com/developer/article/1551901 机器学习中最常用的矩阵求导有&#xff1a;标量对矩阵的求导&#xff0c;矩阵对标量求导以…

矩阵求导、几种重要的矩阵及常用的矩阵求导公式

一、矩阵求导 一般来讲&#xff0c;我们约定x(x1,x2,...xN)Tx(x1,x2,...xN)T&#xff0c;这是分母布局。常见的矩阵求导方式有&#xff1a;向量对向量求导&#xff0c;标量对向量求导&#xff0c;向量对标量求导。 1、向量对向量求导 2、标量对向量求导 3、向量对标量求导 其他…

矩阵求导(本质、原理与推导)详解

矩阵求导是机器学习与深度学习的基础&#xff0c;它是高等数学、线性代数知识的综合&#xff0c;并推动了概率论与数理统计向多元统计的发展。在一般的线性代数的课程中&#xff0c;很少会提到矩阵导数的概念&#xff1b;而且在网上寻找矩阵求导的知识点&#xff0c;也是五花八…

矩阵求导常用公式

矩阵求导常用公式 1 引言2 向量的导数2.1 向量对标量求导 Vector-by-scalar2.2 标量对向量求导 Scalar-by-vector2.3 向量对向量求导 Vector-by-vector 3 矩阵的导数3.1 矩阵对标量求导 Matrix-by-scalar3.2 标量对矩阵求导 Scalar-by-matrix 4 常用求导公式4.1 向量对向量求导…

矩阵的求导

目录 1 布局(Layout) 1.1 矩阵向量求导引入 1.2 矩阵向量求导定义 1.3 矩阵向量求导布局 1.4 分母布局的另一种求解方法 1.5 总结 2 基本的求导规则 2.1 向量对标量求导&#xff08;相对于数量变量的微分&#xff0c;即自变量是数量变量&#xff09; 2.1.1 定义 2.1.…

JAVA—IO流详解

1. 流概述 1.1. 什么是IO IO:Input/Output即输入&输出&#xff0c;也称之为流&#xff08;河流&#xff0c;水流&#xff09;&#xff0c;指的是数据从一个地点到另一个地点过程&#xff1b;对于计算机来说文件的拷贝过程&#xff0c;文件的编写保存&#xff0c;显示功能…