整体流程:

  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();// 将验证码放入sessionmodel.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// 不通过并提示无效验证码

如有疑问,请指出!

java实现手机短信验证的基本思路相关推荐

  1. java实现手机短信验证全过程

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...

  2. Java用户注册手机短信验证码校验功能实现

    验证用户提交的手机短信验证码,如果验证码错误就跳回到当前页面.在短信验证码未填写或未正确填写时,就关闭底下注册按钮的功能,只有短信验证码通过校验后才打开注册按钮的功能.第二种方式是所有输入项全部填写完 ...

  3. Java 实现手机短信发送

    在日常项目开发中, 会遇到短信验证码的功能需求,接下来,主要是对这个功能进行介绍... 一.实现手机短信验证的基本思路 1.用户填写手机号,点击获取验证码按钮(页面可以做一些手机号是否有效处理),发起 ...

  4. java手机短信验证,并存入redis中,验证码时效5分钟

    目录 1.注册发送短信账号一个账号 2.打开虚拟机,将redis服务端打开 3.创建springboot工程,导入相关依赖 4.写yml配置 5.创建controller层,并创建controller ...

  5. 超简单且免费体验的手机短信验证,三分钟学会(包含c语言、c++、python、java、php等语言)

    文章目录 简介. 一.短信平台 二.步骤 1.注册一个账号 2.下载接口文档 3.互亿在Java中的短信验证 总结 简介. 鄙人用的是Java,其他语言也可以用如:c语言.c++.python.jav ...

  6. php中短信验证大致流程,实现php手机短信验证功能的基本思路

    现在很多网站为了避免用户烂注册,都在注册环节添加有手机短信验证功能,用户注册时需要短信验证码才可以,那么这种手机短信验证功能是如何实现的呢?其基本思路是什么呢?下面乐信小编就来为大家介绍下: 实现手机 ...

  7. php手机号码一分钟发送一次短信_如何实现php手机短信验证功能

    现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性 .今天笔者就跟大家分享一下如何实现p ...

  8. .NET 实现手机短信验证接口

    My first blog 注:此文章是用于秒滴的手机短信验证 先声明一个类AccontToken ,里面添加4个字段: 开发者主账号ID:accountSid, 开发者密匙:AUTH_TOKEN, ...

  9. JAVA发送手机短信,httpclient短信发送接口示例(java)

    httpclient短信发送接口示例(java),可用于直接用电脑发送短信,可根据实际情况,与联通移动公司洽谈接口,完成网上发送短信功能,如需jar包,可向联通移动公司项目部沟通. package c ...

最新文章

  1. 福利 |《非结构化数据分析》书评:探索非结构化数据的魅力
  2. ssh vim中不小心按下ctrl+s
  3. java方法未定义类型_java - 方法未定义为类 - SO中文参考 - www.soinside.com
  4. VS2013 生成时复制文件或目录到指定目录
  5. html 对话框 flatballoon,CSS纯样式实现箭头、对话框等形状
  6. Python(6):工程组织结构
  7. .NET 开源项目 StreamJsonRpc 介绍[中篇]
  8. sql LEFT JOIN RIGHT JOIN(左连接)(mysql)
  9. 程序员修神之路:问世间异步为何物?
  10. atitit.词法分析原理 词法分析器 (Lexer)
  11. 实战NSURLProtocol 拦截 APP网络请求NSURLConnection, NSURLSession, Alamofire
  12. IPv6在3G网的应用(转)
  13. [声纹识别]语音识别的发展史
  14. html点击下载图片
  15. 歌词模拟项目c语言,C语言之歌词解析
  16. 支付宝网关支付模式详细解答
  17. 紫外线杀菌器:紫外线杀菌的原理分析
  18. [AHOI2014]骑士游戏
  19. 《The Science of Scientific Writing》读书笔记
  20. 关于自定义View的drawText字体测量

热门文章

  1. Action Pascal(A语言)v3.0官方版
  2. 【转型JAVA CSS 基础day01】
  3. Intel历届CEO汇总!
  4. 7805稳压器保护电路分析
  5. 桥式整流电路工作原理
  6. github上适合练习的vue、react项目
  7. Hadoop_Day01Linux环境搭建、shell基础增强、ZK环境搭建
  8. CPChain星火计划介绍及最新进展
  9. 信息技术用计算机画画教学设计,小学四年级信息技术用计算机画画教学设计.doc...
  10. 源码分析学习记录(6)——蒙皮