java实现手机短信验证的基本思路

本文实例为大家分享了java实现手机短信验证的具体代码,供大家参考,具体内容如下

整体流程:

  1. 客户填入手机号,通过客户端点击获取验证码按钮,验证手机号是否有效,有效则客户端发送请求到后台服务器,客户端开始倒计时60s,不通过则返回;
  2. 服务器,验证手机号是否被注册或有效,通过则调用第三方的短信通信接口并发送相关数据(包括手机号和验证码),然后回调结果,成功则将验证码存入session,失败则返回提示,不通过则返回。
  3. 客户收到验证码后在有效时间内,填入并发送请求。
  4. 服务器端,收到请求后,用户发送过来的验证码和事前放入session的验证码做对比,相同通过,否则提示验证码无效。

通过后,需要将session中的验证码无效化,一般就是置为空。

第一步伪代码:

function sendCaptcha(tel) {  

    console.log("sendCaptcha: tel = " + tel);  

    $.ajax({  

      type: 'post',  

      url: '/sms/captcha/' + tel,  

      dataType: "json",  

      success: function (data) {  

        console.log("sendCaptcha ==> success: data = " + eval(data));  

        if (data) {  

          countdown();  

          b_code = false;  

        } else {  

          alert("您发送的频率过快!");  

        }  

      },  

      error: function (data) {  

        console.log("sendCaptcha ==> error: data = " + eval(data));  

        alert("网络超时");  

        clearTimeout(t);  

        b_code = true;  

        var msg = "获取验证码";  

        $("#code").text(msg);  

        c = 60;  

      }  

    });  

  }

第二步伪代码:

@RequestMapping(value = "captcha/{recPhoneNum}", method = RequestMethod.POST)  

  public Object getSmsCaptcha(ModelMap model, @PathVariable("recPhoneNum")String recPhoneNum) {  

    String responseBody = null;  

    /* 这里验证手机号是否被注册 */

   // 生成验证码

    String captcha = Generator.generateCaptcha();  

   // 第三方短信通信接口参数设置

   req.setReceive(recPhoneNum);

    try {  

     // 发送请求

      responseBody = req.send();

     // 将验证码放入session

      model.addAttribute("captcha", captcha);  

     // 得到结果

      responseBody = rsp.getBody();  

      log.debug("getSmsCaptcha: responseBody = " + responseBody);  

      if (rsp.getResult() != null) {  

        model.addAttribute("success_response", rsp.getResult());  

      } else {  

        model.addAttribute("error_response", rsp.getSubMsg());  

      }  

    } catch (ApiException e) {  

      log.error("getSmsCaptcha :" + e.getErrMsg());  

    }  

    // 解析结果

    if (successJson != null) {  

      successJson = successJson.getJSONObject("result");  

      return successJson.getBoolean("success");  

    } else {  

      return false;  

    }  

  }

最后一步伪代码:

// 从session取出验证码
String captcha = session.getAttribute("captcha");
// 比较
if (reqCaptcha.equals(captcha))
// 相同通过,则无效化验证码
session.setAttribute("captcha", null);

else
// 不通过并提示无效验证码

如有疑问,请指出!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口(遵循短信平台的接口规范即可).具体看代码: 使用HttpClient的时候需要在项目中引入: commons-httpclient-3.1.jar 这个jar包, 项目结构: 1.创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法 /** * 文件说明 * @Descriptio

  • Java使用云片API发送短信验证码

    下面开始介绍的是如何利用机器完成批量操作,将短信业务自动化. 获取APIKEY 云片网提供了完整的SDK和API,可以帮助开发者快速完成业务开发. 在开始Coding前,需要先获取APIKEY,如下所示. 获取APIKEY 点击眼睛按钮后,输入验证码,就可以查看APIKEY了. 这里需要说明的是,APIKEY特别重要,一定要保护好它,避免泄露.云片这边提供了几重保护机制,例如验证.敏感处理.子账号独立APIKEY等,看得出来他们的安全意识还是挺不错的. 开始Coding 有了APIKEY,就可以

  • Java随机生成手机短信验证码的方法

    本文实例讲述了Java随机生成手机短信验证码的方法.分享给大家供大家参考,具体如下: /** * 创建指定数量的随机字符串 * @param numberFlag 是否是数字 * @param length * @return */ public static String createRandom(boolean numberFlag, int length){ String retStr = ""; String strTable = numberFlag ? "1234

  • 基于JAVA的短信验证码api调用代码实例

    本文实例为大家分享了JAVA的短信验证码api调用代码,供大家参考,具体内容如下 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import jav

  • java基于正则提取字符串中的数字功能【如提取短信中的验证码】

    本文实例讲述了java基于正则提取字符串中的数字功能.分享给大家供大家参考,具体如下: 使用Java正则可以很方便的从字符串中提取符合条件的内容. 1.提取字符串中所有的手机号: private void getPhoneNum(String smsBody) { Pattern pattern = Pattern.compile("(13|14|15|18)\\d{9}"); Matcher matcher = pattern.matcher(smsBody); while (mat

  • Android 用RxBinding与RxJava2实现短信验证码倒计时功能

    场景:注册账号页面时,我们点击按钮发送验证码,在等待验证码时,界面会有倒计时提示,这此期间按钮不可点击.当倒计时结束时,按钮恢复. 实现与功能都不难,这次用 RxBinding,RxJava2 的方法去实现.并实现了手动.自动停止倒计时,防止多次点击. 功能动态图 要使用 RxBinding.RxJava2 先添加 Gradle 配置: compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxj

  • java servlet手机app访问接口(二)短信验证

    今天找了几个短信平台,其实最想使用的一个是sharesdk,使用它上面http api短信功能,不仅价格低,而且最少可以充值100RMB,但是审核过于严格,对应APP还必须集成他们的短信功能,而且要上传审核也得20多天,我也只是想找个短信平台测试下而已,所以它就算了.然后就在百度随便在好了一个短信平台www.wasun.cn,暂时感觉它还不错,至少它给的测试帐号接受短信的速度没超过5秒,我看了下一般是3秒甚至更快. 下面我就说说调用短信接口的方法,以及使用中途遇到的问题. 一.httpreque

  • Java实现短信验证码和国际短信群发功能的示例

    最近由于公司的业务拓展,需要给国外用户发送国际短信,像西班牙.葡萄牙.意大利这些国家都要发,还有中国的香港.澳门.台湾(港澳台)这些地区也要发,不过现在已经有许多公司提供国际短信的业务了,之前使用过云片的验证码业务,顺便看到他们也有国际短信的业务,并且更重要的是,不需要修改任何代码,只要添加下国际短信模板,就可以直接使用之前的代码继续发送国际短信,简直太方便了. 废话不多说,直接上代码. /** * Created by bingone on 15/12/16. */ import org.ap

  • JAVA实现利用第三方平台发送短信验证码

    前段时间自己做的一个小项目中,涉及到用短信验证码登录.注册的问题,之前没涉及过这一块,看了别人的博客其实也是似懂非懂的,现在就将自己做的利用第三方短信平台来发送验证码这个功能记下来. 本文以注册为例,在SpringMVC+Spring+Mybatis框架的基础上完成该短信验证码功能. 发送短信验证码的原理是:随机生成一个6位数字,将该6位数字保存到session当中,客户端通过sessionid判断对应的session,用户输入的验证码再与session记录的验证码进行比较. 为了防止有广告嫌疑

  • java实现手机短信验证的基本思路

    本文实例为大家分享了java实现手机短信验证的具体代码,供大家参考,具体内容如下 整体流程: 客户填入手机号,通过客户端点击获取验证码按钮,验证手机号是否有效,有效则客户端发送请求到后台服务器,客户端开始倒计时60s,不通过则返回; 服务器,验证手机号是否被注册或有效,通过则调用第三方的短信通信接口并发送相关数据(包括手机号和验证码),然后回调结果,成功则将验证码存入session,失败则返回提示,不通过则返回. 客户收到验证码后在有效时间内,填入并发送请求. 服务器端,收到请求后,用户发送过来

  • 使用java实现手机短信验证全过程

    一.容联云平台 容联云平台是实现短信验证.还有语音功能等一些操作的平台,在平台注册还可以获得8元的新手额度,一条短信的费用是006元,也就是6分钱,在初学者测试也是可以非常人性化的,然后我这次进行测试的平台呢,也是用到容联云给进行展示 二.操作教程 2.1注册 当你注册进去之后会有8元的新手额度 填写测试号码 然后这里差不多了跟着下面走着 三.实践操作 3.1部署项目使用工具 本次使用的工具是IDEA,然后我为了简便就直接创建了Maven项目进行开发,因为使用到Maven之后是直接导入SDK的依

  • SpringBoot实现短信验证码校验方法思路详解

    有关阿里云通信短信服务验证码的发送,请参考我的另一篇文章   Springboot实现阿里云通信短信服务有关短信验证码的发送功能 思路 用户输入手机号后,点击按钮获取验证码.并设置冷却时间,防止用户频繁点击. 后台生成验证码并发送到用户手机上,根据验证码.时间及一串自定义秘钥生成MD5值,并将时间也传回到前端. 用户输入验证码后,将验证码和时间传到后台.后台先用当前时间减去前台传过来的时间验证是否超时.如果没有超时,就用用户输入的验证码 + 时间 + 自定义秘钥生成MD5值与之前的MD5值比较,

  • NodeJS 实现手机短信验证模块阿里大于功能

    1,NodeJS 安装阿里大于模块 切换到项目目录使用npm 安装阿里于模块 npm i node-alidayu --save 2,aliyu官网使用淘宝账户登录 登录阿里大于 https://doc.alidayu.com/doc2/index.htm 1登录后点击管理中心 2点击应用管理===>创建应用 3配置管理===>验证码====>里添加短信签名 4应用列表里===>操作一栏===>点击设置    记住 app   key 和 APP  sercret 5.后台代

  • java实现发送手机短信

    本文主要研究了JAVA语言发送手机,分享给大家,供大家参考,具体内容如下 JAVA发送手机短信,流传有几种方法: (1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册; (2)使用短信mao的方式进行短信的发送,这种方式应该是比较的常用,前提是需要购买硬件设备,呵呵; (3)使用中国网建提供的SMS短信平台,我的这个小的demo,是基于这个行是发送的. 说明:java实现发送手机短信 /** * 说明:java实现发送手机短信

  • Java实现发送手机短信语音验证功能代码实例

    这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方平台可以实现发送手机短信验证码和语音验证码的功能,本文使用框架是struts2+spring+hibernate,现就action层给出核心代码功能. public class VerifyAction extends BaseAction<VerifyRequest> { private static final long

  • 基于Java随机生成手机短信验证码的实例代码

    简单版 /** * 产生4位随机数(0000-9999) * * @return 4位随机数 */ public static String getFourRandom() { return StringUtils.leftPad(new Random().nextInt(10000) + "", 4, "0"); } 复杂版 /** * 创建指定数量的随机字符串 * @param numberFlag 是否是数字 * @param length * @return

  • Java实现SMS短信通发送手机验证码案例讲解

    注册网建短信通账号 链接:http://sms.webchinese.cn/ 设置短信签名 注意不要乱写别的公司等,会被视为诈骗信息 设置短信密钥,发送时代替密码 Java方式实现 导入依赖 commons-httpclient-3.1.jar 编写SmsUtil工具类 import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.ap

  • Java实现发送短信验证码+redis限制发送的次数功能

    java实现短信验证码发送,由于我们使用第三方平台进行验证码的发送,所以首先,我们要在一个平台进行注册.这样的平台有很多,有的平台在新建账号的时候会附带赠几条免费短信.这里我仅做测试使用(具体哪个平台见参考三,很简单,注册账号就行,记得添加短信签名). 另外,在实际项目中,如果有人恶意攻击,不停的发送短信验证码,就会造成很大的损失.故对发送次数做一定的限制就非常必要,这里我们限制一个手机号一天可以发多少短信和短信平台无关. 这里采用的是存redis来实现这一个功能.就是每次调用发送验证码这个接口

随机推荐