网易首页 > 网易号 > 正文 申请入驻

五步!轻松搞定 Spring Boot 短信验证码登录,就是这简单!

0
分享至

点击上方“Java精选”,选择“设为星标”

别问别人为什么,多问自己凭什么!

下方留言必回,有问必答!

每天08:08更新文章,每天进步一点点...

Part1业务流程

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

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

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

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

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

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

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

Part2首先添加一个jar包

工具类会用到jar包,maven配置文件中增加如下。推荐完全开发前后端源码的后台管理系统:https://gitee.com/yoodb/jing-xuan


commons-codecgroupId>
commons-codecartifactId>
1.11version>
dependency>
Part3编写简单的短信验证功能

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

如果您正在学习Spring Boot,推荐一个连载多年还在继续更新的免费教程:https://blog.yoodb.com/springboot/tutorial


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(),便会发送成功,关注公众号Java精选,你懂的,视频资料。

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);
}

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

作者:classabcd blog.csdn.net/classabcd/article/details/82464582

期往精选 点击标题可跳转

- 小程序,3000+ 道面试题在线刷,最新、最全 Java 面试题!

文章有帮助的话,在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
刘亦菲大翻车?!被骂油腻冲上热搜……

刘亦菲大翻车?!被骂油腻冲上热搜……

莫问先生
2024-06-17 18:07:40
昨天沪翔高速翻车,疑“斗气车”引发

昨天沪翔高速翻车,疑“斗气车”引发

新民晚报
2024-06-18 09:25:30
当身体没事时吃了一颗布洛芬后会怎样?布洛芬:真是奇了怪了

当身体没事时吃了一颗布洛芬后会怎样?布洛芬:真是奇了怪了

今日养生之道
2024-06-17 18:14:26
75年毛泽东病重,张玉凤故意拿出年轻时的照片,主席看完画了个圈

75年毛泽东病重,张玉凤故意拿出年轻时的照片,主席看完画了个圈

正史笔记
2024-06-18 17:41:30
刚刚!俄罗斯遭遇屈辱叛变,盟友军援乌克兰,俄方已不抱任何期望

刚刚!俄罗斯遭遇屈辱叛变,盟友军援乌克兰,俄方已不抱任何期望

新财迷
2024-06-17 09:51:28
美利坚合众国:生于不义,死于耻辱

美利坚合众国:生于不义,死于耻辱

布衣的呼喊
2024-05-15 09:56:14
高温袭袭,让电动车“沦为笑柄”,彻底取代燃油车还是一句空话

高温袭袭,让电动车“沦为笑柄”,彻底取代燃油车还是一句空话

户外小阿隋
2024-06-18 14:48:39
世界最憋屈的发达国家,6个省被邻国占领,赶不走也灭不掉

世界最憋屈的发达国家,6个省被邻国占领,赶不走也灭不掉

星辰故事屋
2023-12-11 22:02:43
99年,女子被推土坑活埋,死前哀求:求你放了我,女儿还在家等我

99年,女子被推土坑活埋,死前哀求:求你放了我,女儿还在家等我

星辰故事屋
2024-06-11 13:32:59
浙江杭州,一位在KTV上班的女子,凌晨陪客户出去吃夜宵,结果不幸遭遇车祸

浙江杭州,一位在KTV上班的女子,凌晨陪客户出去吃夜宵,结果不幸遭遇车祸

今日搞笑分享
2024-06-14 07:10:15
神秘失踪!朱军的绝色搭档竟然不是辞职,而是悲剧离世!

神秘失踪!朱军的绝色搭档竟然不是辞职,而是悲剧离世!

小鹿姐姐情感说
2024-06-18 07:35:02
使馆车嚣张堵路后续:眼尖网友发现车主身份,顶流媒体火速删视频

使馆车嚣张堵路后续:眼尖网友发现车主身份,顶流媒体火速删视频

糖逗在娱乐
2024-06-18 23:19:49
一对情侣与领导吃烧烤,领导把男方灌醉,与女方去厕所偷偷接吻

一对情侣与领导吃烧烤,领导把男方灌醉,与女方去厕所偷偷接吻

一个岛岛
2024-06-18 22:52:05
谈崩了,“快速达成协议希望破灭”

谈崩了,“快速达成协议希望破灭”

观察者网
2024-06-18 21:53:06
村民花几十万买地却无法建房?广东省自然资源厅:或涉违规

村民花几十万买地却无法建房?广东省自然资源厅:或涉违规

南方都市报
2024-06-18 19:45:07
王思聪躺在21岁新女友大腿上,让女友给他做头部按摩,网友:羡慕

王思聪躺在21岁新女友大腿上,让女友给他做头部按摩,网友:羡慕

兰子记
2024-06-16 19:46:34
外交部:推动中波全面战略伙伴关系在新起点上取得更大进展

外交部:推动中波全面战略伙伴关系在新起点上取得更大进展

环球网资讯
2024-06-17 16:18:22
轰39+38+31!惨遭魔术截胡,火箭明知故犯啊,超巨又要被抢了

轰39+38+31!惨遭魔术截胡,火箭明知故犯啊,超巨又要被抢了

巴叔GO聊体育
2024-06-18 16:55:33
4国军舰闯入南海军演,中方039潜艇果断发射鱼雷,摧毁一艘两栖舰

4国军舰闯入南海军演,中方039潜艇果断发射鱼雷,摧毁一艘两栖舰

军事在前沿
2024-06-18 13:53:53
梅州球迷怒了!不满判罚围堵裁判车辆讨说法,怒喊“任通进监狱”

梅州球迷怒了!不满判罚围堵裁判车辆讨说法,怒喊“任通进监狱”

我爱英超
2024-06-18 22:50:46
2024-06-19 03:22:44
Java精选
Java精选
一场永远也演不完的戏
1551文章数 3855关注度
往期回顾 全部

科技要闻

第一批小米车主,已经开始卖车了

头条要闻

欧洲杯-皇马19岁天才世界波 土耳其3-1格鲁吉亚

头条要闻

欧洲杯-皇马19岁天才世界波 土耳其3-1格鲁吉亚

体育要闻

对于凯尔特人来说 谁是MVP根本不重要

娱乐要闻

被曝新恋情,张碧晨王琳凯发声辟谣

财经要闻

官方:税务部门没有倒查30年的安排

汽车要闻

全球最低价 现代IONIQ 5N预售价39.88万

态度原创

时尚
家居
游戏
亲子
数码

陆仙人:一步一步的路

家居要闻

在用什么吃饭这件事上,中国人仪式感拉满了

黄月英在三国谋定天下真能平替大乔?诸葛亮头顶的草怕是除不掉了

亲子要闻

宝宝身上胎记怎么来的?孕期3种行为容易使胎儿长胎记,尽量避开

数码要闻

两大苹果专家同一天发文:iPad只是开始 iPhone和手表也将努力变薄

无障碍浏览 进入关怀版