介绍
这期内容当中小编将会给大家带来有关使用springboot如何实现一个短信验证码登录功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<代码> 1> 代码,构造手机验证码:使用随机对象生成要求的随机数作为验证码,例如4位验证码:1000 ~ 9999年之间随机数;
<代码> 2> 代码,使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到制定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;
<代码> 3 代码>,保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式),
<代码> 4> 代码,将手机号——验证码,操作时间存入会话中,作为后面验证使用;
<代码> 5> 代码,接收用户填写的验证码及其他数据;
<代码> 6> 代码,对比提交的验证码与会话中的验证码是否一致,同时判断提交动作是否在有效期内;
<代码> 7> 代码,验证码正确且在有效期内,请求通过,处理相应的业务。
一,首先添加一个jar包,工具类会用的到。
& lt; !——秒滴云的jar包——比; & lt; dependency> ,& lt; groupId> commons-codec ,& lt; artifactId> commons-codec ,& lt; version> 1.11 & lt;/version> & lt;/dependency>
二,我这里只是编写一个简单的短信验证功能,要是用其他的语音验证。
等等需要去秒滴云官方下载文档,下面是编写的一个配置文档,专门存放一些参数
<人物> 图>
三、编写http请求工具类
public class HttpUtil {/* * ,*构造通用参数时间戳、团体和respDataType ,* ,* @return ,*/,public static String  createCommonParam () ,{//才能,时间戳 SimpleDateFormat 才能;sdf =, new SimpleDateFormat (“yyyyMMddHHmmss"); String 才能;timestamp =, sdf.format (new 日期());//,才能签名 String 才能;sig =, DigestUtils.md5Hex(时间+ Config.ACCOUNT_SID Config.AUTH_TOKEN +,时间戳); return 才能“×夯实=?+,timestamp +,“和团体=?+,sig +,“和respDataType=? +, Config.RESP_DATA_TYPE; ,}/* * ,*后请求 ,* ,* @param url ,*功能和操作 ,* @param 身体 ,*要发布的数据 ,* @return ,* @throws IOException ,*/,public static  String 职位(String url, String 身体) ,{ System.out.println才能(“url:“, +, System.lineSeparator (), +, url); System.out.println才能(“身体:“,+,System.lineSeparator(), +,身体); String 才能;result =,““ ,试一试 {才能 ,,OutputStreamWriter out =,空; ,,BufferedReader 拷贝=,空; ,,URL realUrl =, new URL(网址); ,,URLConnection conn =, realUrl.openConnection ();//,,,设置连接参数 ,,conn.setDoOutput(真正的); ,,conn.setDoInput(真正的); ,,conn.setConnectTimeout (5000); ,,conn.setReadTimeout (20000); ,,conn.setRequestProperty (“Content-Type",,“应用程序/x-www-form-urlencoded");//,,,提交数据 ,,out =, new OutputStreamWriter (conn.getOutputStream (),“UTF-8"); ,,out.write(身体); ,,out.flush ();//,,,读取返回数据 ,,=,拷贝new BufferedReader (new InputStreamReader (conn.getInputStream (),“UTF-8")); ,,String line =,““ ,,boolean firstLine =,真的,,//,读第一行不加换行符 ,,while ((=line in.readLine ()), !=, null) ,,{ ,,if (得力) ,,{ ,,,firstLine =,假; ,,}, ,,{ ,,,result +=, System.lineSeparator (); ,,} ,,result +=,行; ,,} ,,},catch (Exception e) {才能 ,,e.printStackTrace (); ,,} return 才能;结果; ,}/* * ,*回调测试工具方法 ,* ,* @param url ,* @param reqStr ,* @return ,*/,public static  String postHuiDiao (String url, String 身体) ,{ String 才能;result =,““ ,试一试 {才能 ,,OutputStreamWriter out =,空; ,,BufferedReader 拷贝=,空; ,,URL realUrl =, new URL(网址); ,,URLConnection conn =, realUrl.openConnection ();//,,,设置连接参数 ,,conn.setDoOutput(真正的); ,,conn.setDoInput(真正的); ,,conn.setConnectTimeout (5000); ,,conn.setReadTimeout (20000);//,,,提交数据 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null使用springboot如何实现一个短信验证码登录功能