ホームページ  >  記事  >  ウェブフロントエンド  >  SMS 認証を最適化する方法

SMS 認証を最適化する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-06-06 11:06:441129ブラウズ

今回は、SMS 認証を最適化する方法と、SMS 認証を最適化するための注意点について説明します。以下は実際のケースです。見てみましょう。

通常、プロジェクトに登録するときにSMS認証機能を使用することが多いですが、現在多くのSMS認証には次の問題があります。たとえば、SMS認証時間が60秒である場合、

1.ボタンがクリックされたとき。カウントダウンが 60 秒に達していない場合は、ブラウザを更新して確認コード ボタンを再度クリックしてください

2. ボタンをクリックするとカウントダウンが開始され、たとえば 50 秒でブラウザを閉じ、5 秒後に開いています。この時点でのカウントダウンは約 45 秒であるはずですが、ブラウザを再度開くと、ボタンが再度クリックされる可能性があります

上記 2 つの問題を解決するには、時間を localstorage Go に書き込む必要があります、ページが開いたら、localstorage に移動して取得します。数日前にこのメソッドを使用した vue プロジェクトがあったので、ここに

HTML コードを記述します。コンポーネント:

<p class="mtui-cell__ft" @click="getCode">
   <button class="mtui-vcode-btn mtui-text-center" v-if="flag">获取短信</button>
   <button class="mtui-vcode-btn mtui-text-center" v-if="!flag">剩余{{second}}s</button>
</p>

ここが重要なポイントです

データで使用する必要があるいくつかの変数を定義します:

 second: 60,
 flag: true,
 timer: null // 该变量是用来记录定时器的,防止点击的时候触发多个setInterval

SMS 認証の取得方法:

getCode() {
   let that = this;
   if (that.flag) {
    that.flag = false;
    let interval = window.setInterval(function() {
     that.setStorage(that.second);
     if (that.second-- <= 0) {
      that.second = 60;
      that.flag = true;
      window.clearInterval(interval);
     }
    }, 1000);
   }
  }

localstorage の書き込みと読み取り:

     setStorage(parm) {
   localStorage.setItem("dalay", parm);
   localStorage.setItem("_time", new Date().getTime());
  },
  getStorage() {
   let localDelay = {};
   localDelay.delay = localStorage.getItem("dalay");
   localDelay.sec = localStorage.getItem("_time");
   return localDelay;
  }

確認コードを無効にする:

judgeCode() {
   let that = this;
   let localDelay = that.getStorage();
   let secTime = parseInt(
    (new Date().getTime() - localDelay.sec) / 1000
   );
   console.log(localDelay);
   if (secTime > localDelay.delay) {
    that.flag = true;
    console.log("已过期");
   } else {
    that.flag = false;
    let _delay = localDelay.delay - secTime;
    that.second = _delay;
    that.timer = setInterval(function() {
     if (_delay > 1) {
      _delay--;
      that.setStorage(_delay);
      that.second = _delay;
      that.flag = false;
     } else {
             
              // 此处赋值时为了让浏览器打开的时候,直接就显示剩余的时间
      that.flag = true;
      window.clearInterval(that.timer);
     }
    }, 1000);
   }
  }

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

vuexを使用して状態オブジェクトを操作する方法

nodeを使用して個人アカウントロボットを作成する方法

以上がSMS 認証を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。