短信验证码登录流程思路及详细步骤

点击蓝色“java大数据修炼之道”关注我哟加个“星标”,每晚21:00,一起学技术
来源: blog.csdn.net/classabcd/article/details/82464582
作者: classabcd

Part1业务流程

  1. 构造手机验证码:使用random对象生成要求的随机数作为验证码,例如4位验证码:1000~9999之间随机数;

  2. 使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到指定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;

  3. 保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式);

  4. 将手机号--验证码、操作时间存入Session中,作为后面验证使用;

  5. 接收用户填写的验证码及其他数据;

  6. 对比提交的验证码与Session中的验证码是否一致,同时判断提交动作是否在有效期内;

7、验证码正确且在有效期内,请求通过,处理相应的业务。

Part2首先添加一个jar包

工具类会用到

<!--秒滴云的jar包-->
<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.11</version>
</dependency>

Part3编写简单的短信验证功能

我这里只是编写一个简单的短信验证功能,要是用其他的语音验证。。。。等等需要去秒滴云官方下载文档,下面是编写的一个config文档,专门存放一些参数

Part4编写http请求工具类

public class HttpUtil
{/*** 构造通用参数timestamp、sig和respDataType* * @return*/public static String createCommonParam(){// 时间戳SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String timestamp = sdf.format(new Date());// 签名String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;}/*** post请求* * @param url*            功能和操作* @param body*            要post的数据* @return* @throws IOException*/public static String post(String url, String body){System.out.println("url:" + System.lineSeparator() + url);System.out.println("body:" + System.lineSeparator() + body);String result = "";try{OutputStreamWriter out = null;BufferedReader in = null;URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 设置连接参数conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(5000);conn.setReadTimeout(20000);conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 提交数据out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");out.write(body);out.flush();// 读取返回数据in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = "";boolean firstLine = true; // 读第一行不加换行符while ((line = in.readLine()) != null){if (firstLine){firstLine = false;} else{result += System.lineSeparator();}result += line;}} catch (Exception e){e.printStackTrace();}return result;}/*** 回调测试工具方法* * @param url* @param reqStr* @return*/public static String postHuiDiao(String url, String body){String result = "";try{OutputStreamWriter out = null;BufferedReader in = null;URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 设置连接参数conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(5000);conn.setReadTimeout(20000);// 提交数据out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");out.write(body);out.flush();// 读取返回数据in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = "";boolean firstLine = true; // 读第一行不加换行符while ((line = in.readLine()) != null){if (firstLine){firstLine = false;} else{result += System.lineSeparator();}result += line;}} catch (Exception e){e.printStackTrace();}return result;}
}

Part5生成四位数的方法

public static String runNumber() {String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";StringBuilder sb=new StringBuilder(4);for(int i=0;i<4;i++){char ch=str.charAt(new Random().nextInt(str.length()));sb.append(ch);}System.out.println(sb.toString());String code = sb.toString();return code;
}
4、执行方法execute(),便会发送成功public class IndustrySMS
{private static String operation = "/industrySMS/sendSMS";private static String accountSid = Config.ACCOUNT_SID;private static String to = "15342349382";private static String smsContent = "【小陶科技】登录验证码:{"+runNumber().toString()+"},如非本人操作,请忽略此短信。";/*** 验证码通知短信*/public static void execute(){String tmpSmsContent = null;try{tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");}catch(Exception e){}String url = Config.BASE_URL + operation;String body = "accountSid=" + accountSid + "&to=" + to + "&smsContent=" + tmpSmsContent+ HttpUtil.createCommonParam();// 提交请求String result = HttpUtil.post(url, body);System.out.println("result:" + System.lineSeparator() + result);}

以上就是短信验证码登录流程详细步骤

PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。
▽加我微信,交个朋友
长按/扫码添加↑↑↑
1、这次专治Docker疑难杂症2、微服务架构实施原理详解3、盘点 HashMap 源码中的那些优雅的设计!4、面试官欺负人:new Object()到底占用几个字节?5、volatile有哪些应用场景?6、面试官问:缓存与数据库一致性如何解决?先操作数据库,还是缓存?

看完本文有收获?请转发分享给更多人

请长按二维码,关注 Java大数据修炼之道.

推荐程序员必备公众号 

Java大数据修炼之道

公众号:

gh_9119f24d3793

推荐理由:

在这里,我们分享程序员相关技术,职场生活,行业热点资讯。不定期还会分享IT趣文和趣图。这里属于我们程序员自己的生活,工作和娱乐空间。

 ▼长按下方↓↓↓二维码识别关注

关注 java大数据修炼之道

    每天学习java技术你想学的Java知识这里都有

点「在看」的人都涨薪了哦


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47207.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023首届盘古石杯晋级赛复盘

晋级赛通排61&#xff0c;学生组39&#xff0c;折在大小写格式上的题太多了qaq 容器密码&#xff1a;usy1UN2Mmgram&^d?0E5r9myrk!cmJGr Android程序分析 1.涉案应用刷刷樂的签名序列号是(答案格式&#xff1a;123ca12a)(★☆☆☆☆) 11fcf899 雷电APP跑的时候前面加…

基于国央企的企业关系大数据洞察分析

国资大数据智能洞察分析系统是利用新兴互联技术、大数据、人工智能与云计算&#xff0c;实现数据挖掘、数据分析与数据展现&#xff0c;以新的表达形式调整或重塑业务模式、流程&#xff0c;以实现数据价值与市场增长。 一、建设国资大数据智能洞察系统的背景 &#xff08;一&…

科大讯飞星火大模型评测:从职场到日常生活,样样精通

文 | 大力财经 今年最热门的话题当属OpenAI发布ChatGPT 3.5版本&#xff0c;全球用户对此纷纷追捧。在国内领域&#xff0c;百度、阿里巴巴、字节跳动、360、腾讯和科大讯飞等厂商纷纷推出大型模型&#xff0c;加入“百模大战”的竞赛。 大模型在自然语言处理领域可以显著提高…

测试 GPT3.5 与 GPT4:哪个模型写的代码更优?

【CSDN 编者按】与 GPT3.5&#xff08;旧的 chatGPT &#xff09;相比&#xff0c;GPT4 在代码生成方面有了很大的进步&#xff0c;但仍存在速度较慢问题。 原文链接&#xff1a;https://wandb.ai/capecape/gpt3vsgpt4/reports/Testing-GTP3-5-vs-GPT4-Which-Model-Writes-Bett…

面试高频关键字

文章目录 前言一、static&#xff1f;1、static修饰全局变量总结&#xff1a; 2、static修饰函数总结&#xff1a; 3、static修饰局部变量总结 二、const&#xff1f;Ⅰ、 const修饰普通变量Ⅱ、 const修饰指针变量Ⅲ、 const修饰函数1、const修饰函数参数2、const 修饰函数返回…

如何通过twitter群推王引流到listing

粉丝经济绝对是亚马逊卖家营销的最佳方式之一。这时卖家要想&#xff0c;我所选产品的目标客户是谁&#xff0c;他们需要什么&#xff1f;这样才能正确分享自己的资源&#xff0c;让粉丝觉得关注你的账号不是浪费时间和精力&#xff0c;而是真正对我有用。 保持在推特上发微博也…

面试直通卡大放送,微软面试官带你揭秘面试潜规则!

最近&#xff0c;很多朋友吐槽工作压力&#xff0c;高薪工作难找&#xff0c;今年中小企业的就业压力比任何一年都大。 7月16日&#xff0c;国家统计局新闻发言人刘爱华在国新办发布会上坦言&#xff0c;2020年上半年城镇新增就业少173万人。 此外&#xff0c;毕业季大学生失业…

网易互联网产品运营管培生面试经历--从群面到终面面试经验分享

一、网申、在线测评 网易刚刚开始2016校招的时候我就去网申了&#xff0c;快9月中旬的时候改了一次志愿顺序。10月8日收到了网易的短信通知&#xff0c;说通过了简历筛选环节&#xff0c;邀请我参加在线测评。 在线测评是一个CBE&#xff08;如果没记错的话&#xff09;的…

独家揭秘:站外引流的十大技巧!

在今天的互联网时代&#xff0c;如何有效地引流已成为网站运营者面临的一个重要问题。 站外引流是指通过在其他网站或平台上建立链接或发布内容&#xff0c;将流量引导到自己的网站&#xff0c;提高自己网站的访问量。 本文将为大家揭秘站外引流的十大技巧&#xff0c;帮助大…

如何高效快速的做私域引流,巨准实操攻略送给你

如今流量越来越贵&#xff0c;获客成本越来越高&#xff0c;现在商家越来越注重私域的精耕&#xff0c;想尽各种办法&#xff0c;把目标客户锁定在自己的微信私域里。 很多人问&#xff1a;那怎样做私域引流&#xff1f;公域为基地扩充私域流量的抓手当今&#xff0c;公、私域…

私域运营4个基本功介绍(引流,内容,工具,方法论)

私域之所以被重视的根本原因是流量模式的改变。品牌也看到了用户的CLV价值&#xff0c;才愿意投入时间和精力去打造属于自己的私域流量“池”。而品牌在搭建属于自己的私域流量“池”时&#xff0c;应该考虑到在私域的“人”。本篇内容作者将为大家说透品牌私域落地的4大基本功…

HTTPS(面试高频必须掌握)

目录 一、HTTPS背景 二、HTTPS 的工作过程 1. 对称加密 2.非对称加密 3. HTTPS 基本工作过程 3.1 使用对称密钥 3.2 引入非对称密钥&#xff08;面试高频问题&#xff09; 3.3 黑客的手段 3.4 引入证书 3.5 捋一捋 3.6 SSL/TLS 三、HTTP 与 HTTPS 区别&#xff08;…

一对一语音视频直播双端原生+php后台源码 社交交友APP匹配语音视频聊天即时通信源码

介绍&#xff1a; 这套是没有教程的哈&#xff0c;你们需要的自己研究。 开发语言 后端web&#xff1a;PHP Android&#xff1a;Java iOS&#xff1a;obje-ct-ctive-C 全新原生一对一社交软件 速度匹配 视频匹配语音匹配 即时通信产品 秒匹配 秒接通 独立资料卡页面 画面以及语…

chatgpt赋能python:Python代码的修改

Python代码的修改 Python是一门广泛应用于Web开发、数据分析、人工智能等领域的编程语言。当你编写Python代码时&#xff0c;你可能需要修改代码以满足不同的需求。但是&#xff0c;如何修改Python代码并确保其正常运行呢&#xff1f;在本文中&#xff0c;我们将介绍一些关于P…

chatgpt赋能python:Python修改List的教程

Python修改List的教程 当涉及到Python编程时&#xff0c;对于处理和管理数据&#xff0c;List是一个非常常见和有用的数据结构。像大多数数据结构一样&#xff0c;有时需要对List进行修改&#xff0c;以便更好地满足程序的需求。因此&#xff0c;本文将向您展示如何使用Python…

来自MIT的论文答辩、PPT教程,教你轻松应对毕业季和学术会议

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 马上就要毕业了&#xff0c;你是不是还在为论文答辩发愁&#xff1f; 又或者你第一次参加学术会议&#xff0c;不知道如何制作论文海报和演讲PPT&#xff1f; 这些与论文主体看似无关的“细枝末节”&#xff0c;往往没有人帮忙&a…

【学术技巧】论文答辩,老师会仔细看论文内容吗?

有同学问&#xff0c;我要参加学位论文答辩&#xff0c;老师会仔细看论文内容吗&#xff1f; 看看大家怎么回答&#xff1f; 高赞回答一 作者&#xff1a;静寂谷链接&#xff1a;https://www.zhihu.com/question/321307733/answer/673243143来源&#xff1a;知乎 一堆人在写答…

chatgpt赋能python:用Python做量化分析:如何利用编程语言赚取利润

用Python做量化分析&#xff1a;如何利用编程语言赚取利润 在金融市场中&#xff0c;量化分析是一种广泛应用的投资策略。该策略基于数学和统计学模型&#xff0c;利用计算机算法来分析和预测金融市场&#xff0c;以获得更好的投资回报。使用python编程语言可以轻松地进行量化…

ChatGPT最大竞争对手来了,两分钟保姆级教程

这个教程前几天就要出了&#xff0c;一直排到今天。 我们都知道&#xff0c;因为ChatGPT在国内的各种限制&#xff0c;非常影响我们体验。 但是现在我们有了更多选择&#xff0c;ChatGPT最大的竞争对手横空出世 Claude的技术部分就来自于OpenAI&#xff0c;AIria测试下来Cla…