今回は、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 サイトの他の関連記事に注目してください。
推奨読書:
以上がSMS 認証を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。