1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        搞一個(gè)短信驗(yàn)證碼登錄,難嗎?

        共 3853字,需瀏覽 8分鐘

         ·

        2020-12-22 14:57

        來(lái)源:blog.csdn.net/classabcd/java/

        article/details/82464582

        1、構(gòu)造手機(jī)驗(yàn)證碼:使用random對(duì)象生成要求的隨機(jī)數(shù)作為驗(yàn)證碼,例如4位驗(yàn)證碼:1000~9999之間隨機(jī)數(shù);

        2、使用接口向短信平臺(tái)發(fā)送手機(jī)號(hào)和驗(yàn)證碼數(shù)據(jù),然后短信平臺(tái)再把驗(yàn)證碼發(fā)送到制定手機(jī)號(hào)上,接口參數(shù)一般包括:目標(biāo)手機(jī)號(hào),隨機(jī)驗(yàn)證碼(或包含失效時(shí)間),平臺(tái)接口地址,平臺(tái)口令;

        3、保存接口返回的信息(一般為json文本數(shù)據(jù),然后需轉(zhuǎn)換為json對(duì)象格式);

        4、將手機(jī)號(hào)--驗(yàn)證碼、操作時(shí)間存入Session中,作為后面驗(yàn)證使用;

        5、接收用戶填寫的驗(yàn)證碼及其他數(shù)據(jù);

        6、對(duì)比提交的驗(yàn)證碼與Session中的驗(yàn)證碼是否一致,同時(shí)判斷提交動(dòng)作是否在有效期內(nèi);

        7、驗(yàn)證碼正確且在有效期內(nèi),請(qǐng)求通過(guò),處理相應(yīng)的業(yè)務(wù)。

        一、首先添加一個(gè)jar包,工具類會(huì)用到。


        <dependency>
        ??<groupId>commons-codecgroupId>
        ??<artifactId>commons-codecartifactId>
        ??<version>1.11version>
        dependency>

        我這里只是編寫一個(gè)簡(jiǎn)單的短信驗(yàn)證功能,要是用其他的語(yǔ)音驗(yàn)證。。。。等等需要去秒滴云官方下載文檔,下面是編寫的一個(gè)config文檔,專門存放一些參數(shù)

        img

        二、編寫http請(qǐng)求工具類

        public?class?HttpUtil
        {
        ???/**
        ????*?構(gòu)造通用參數(shù)timestamp、sig和respDataType
        ????*?
        ????*?@return
        ????*/

        ???public?static?String?createCommonParam()
        ???
        {
        ??????//?時(shí)間戳
        ??????SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyyMMddHHmmss");
        ??????String?timestamp?=?sdf.format(new?Date());

        ??????//?簽名
        ??????String?sig?=?DigestUtils.md5Hex(Config.ACCOUNT_SID?+?Config.AUTH_TOKEN?+?timestamp);

        ??????return?"×tamp="?+?timestamp?+?"&sig="?+?sig?+?"&respDataType="?+?Config.RESP_DATA_TYPE;
        ???}

        ???/**
        ????*?post請(qǐng)求
        ????*?
        ????*?@param?url
        ????*????????????功能和操作
        ????*?@param?body
        ????*????????????要post的數(shù)據(jù)
        ????*?@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();

        ?????????//?設(shè)置連接參數(shù)
        ?????????conn.setDoOutput(true);
        ?????????conn.setDoInput(true);
        ?????????conn.setConnectTimeout(5000);
        ?????????conn.setReadTimeout(20000);
        ?????????conn.setRequestProperty("Content-Type",?"application/x-www-form-urlencoded");
        ?????????//?提交數(shù)據(jù)
        ?????????out?=?new?OutputStreamWriter(conn.getOutputStream(),?"UTF-8");
        ?????????out.write(body);
        ?????????out.flush();

        ?????????//?讀取返回?cái)?shù)據(jù)
        ?????????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;
        ???}

        ???/**
        ????*?回調(diào)測(cè)試工具方法
        ????*?
        ????*?@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();

        ?????????//?設(shè)置連接參數(shù)
        ?????????conn.setDoOutput(true);
        ?????????conn.setDoInput(true);
        ?????????conn.setConnectTimeout(5000);
        ?????????conn.setReadTimeout(20000);

        ?????????//?提交數(shù)據(jù)
        ?????????out?=?new?OutputStreamWriter(conn.getOutputStream(),?"UTF-8");
        ?????????out.write(body);
        ?????????out.flush();

        ?????????//?讀取返回?cái)?shù)據(jù)
        ?????????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;
        ???}
        }

        三、生成四位數(shù)的方法

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

        四、執(zhí)行方法execute(),便會(huì)發(fā)送成功

        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?=?"【小陶科技】登錄驗(yàn)證碼:{"+runNumber().toString()+"},如非本人操作,請(qǐng)忽略此短信。";

        ???/**
        ????*?驗(yàn)證碼通知短信
        ????*/

        ???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();

        ???????//?提交請(qǐng)求
        ???????String?result?=?HttpUtil.post(url,?body);
        ???????System.out.println("result:"?+?System.lineSeparator()?+?result);
        ???}

        END


        有熱門推薦?

        1.?心驚肉跳,新來(lái)的妹紙 rm -rf 把公司整個(gè)數(shù)據(jù)庫(kù)刪沒(méi)了?。?!

        2.?面試前必知必會(huì)的二分查找及其變種

        3.?糾結(jié)!日志框架選型,Logback 還是 Log4j2?

        4.?順豐快遞:請(qǐng)簽收MySQL靈魂十連

        最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

        獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

        文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

        謝謝支持喲 (*^__^*)

        瀏覽 48
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            美女露逼图片 | 天天黄片| 国产呻吟久久 | 色欧美在线 | 丁香五月婷婷综合网 | 91视频污免费 | 无码不卡在线观看 | 男生操女生视频免费看 | 国产欧美日韩中文字幕 | 成 人 黄 色 小说网站 s色 |