2017-12-04 5 views
1

私はAngular4でログインフォームを作成しています。 3つの無効な資格情報を入力した後、30秒待機(ボタンを無効にする)を実行したいと思います。次の3回の無効な試行の後、待機時間は2倍、60秒、120秒などとなります。私はカウンターを初期化し、それぞれの無効なフォーム提出書類でカウンターを減らします。そして、次のようなsetTimeIntervalを使用してください:Angualr4、3回のログイン試行を待ってから

initCounter() { 
    this.intervalTimer = setInterval(() => { 
     let count = this.counter; 
     if (count > 0) { 
      this.counter = count - 1; 
     } 
    }, 1000); 
} 

しかし、私はこのタスクを期待通りに完了できませんでした。

誰かが私を助けることを願っています。

+1

のようにそれを行ってことができます。次に、それが3の倍数であるかどうか、それが乗数として使用されているかどうかを確認します。カウンタが6,6/3 = 2の場合、2x30秒は60秒のタイムアウトを与えます。 9/3は3x30秒などを意味します。希望が役立ちます。 – ahtsei

+3

ちょうど警告:ボタン(単独)を無効にするだけでは不十分です。 また、サーバーで待機を実装する必要があります。 あなたのサイトをブルートフォースしようとする人は、HTTPリクエストを直接発してしまうでしょう。フロントエンドを使用していません。 –

答えて

1

は、最後に私の代わりにカウンタをデクリメントの、あなたはそれをインクリメントすることができ、私の頭の上から

setLoginCounter(loginForm) { 
     this.loginCounter += 1; 
     localStorage.setItem('logCount', this.loginCounter.toString()); 

     if (this.loginCounter % 3 === 0) { 
       this.counter = 30 * (Math.pow(2, (this.loginCounter/3) - 1)); 
     } 

    }