ReCAPTCHA'lı Girişi Ekranı Tepki için YerelDepolama

oy
0

Kullanıcı o / o tek yol is ReCAPTCHA onay kutusunu tıklayın görünür 2'den fazla kez ReCaptcha deneyin ancak kullanıcı sayfayı yenileyin eğer ReCaptcha çünkü benim devlet attempNumber ait gitmiş ise Web sitemi giriş çalıştığınızda Merhaba ben denemek herkes localStorage kullanmak. Ben localStorage içinde attempNumber tutmak ve yenileme sayfası, reCaptche olmalıdır zaman fazla 2 deneyin kullanıcı eğer öncelikle localStorage kullanmak istiyorum.

Ben böyle denedim, ama sen ben çok bunun için takdir edilecektir bana yardım working.If değil. Herkese teşekkürler .

 this.state = {
      email: '',
      password: '',
      load: false,
      attempCount: 0,
    };

 handleLogin(e) {
    const {
      email, password, recaptcha,
    } = this.state;

    const cachedHits = localStorage.getItem(this.state.attempCount);

    if (cachedHits) {
      this.setState({ attempCount: JSON.parse(cachedHits) });
      return;
    }
    this.setState({ attempCount: this.state.attempCount + 1 });
    e.preventDefault();
    e.stopPropagation();
    this.props.doSignIn({ email, password, recaptcha });
    return false;
  }
Oluştur 08/11/2018 saat 11:32
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
0

iyi, nasıl ve ne localStorage değeri ayarı nerede görünmüyor ekledik kodu.

Sana güncellenir varsayalım localstorageböyle bir olay şey tıklayın giriş düğmesini

localStorage.setItem('clickCount', this.state.attempCount ); 

senin varsayarak this.state.attempCounttıklamada 1 artırılır

Şimdi değeri kullanımını almak için

let count = localStorage.getItem('clickCount');

if(count > 2){
  // show Captcha
}
Cevap 08/11/2018 saat 11:55
kaynak kullanıcı

oy
0

Sana anahtarının altında değerini almak için çalışıyoruz tahmin 0Eğer belgelerine bir göz atın eğer burada . Şimdi sıra bir anahtar sen altında kaydetmek için deneyin localStorage.setItem('attempts', this.state.attempCount)ve sonra localStorage.getItem('attempts').

Bir yaptığınızda getItemben bir döneceğimize inanıyorum string, bu yüzden bir ayrıştırma yapmak parseInt(localStorage.getItem('attempts'), 10)herhangi bir işlem için kullanmadan önce.

koduyla iki sorun vardır:

  1. değer localStorage içinde beign seti asla.

  2. handleLogin hattı Kat cachedHits = localStorage.getItem altında, adı İlk kez (0); o yerel deposunda saklanır asla sıfır değerini almaya çalışır ve bunu (yani cachedHits = null), o zaman eğer kısmını atlar ve 1 ve gösteri captcha halde attempCount ayarlar null döndürür. handleLogin 'ın bir sonraki const cachedHits = localStorage.getItem (1); hangi tekrar önbellek mevcut değildir ve cachedHits = null vb ... öyleyse, o anahtarı kullanmak gibi ve GetItem bazı anahtarın karşı localStorage değeri ayarlamanız gerekir

Cevap 08/11/2018 saat 11:45
kaynak kullanıcı

oy
0

senin doSignIn kodunu görmeden sizin localStorage ile neler olduğunu söylemek zor, ancak yapıştırılan kodda localStorage için çağrı anahtar olarak attemptCount geçen olduğunu. Böyle 'attemptCount' yerine, devlet değişikliklerle değiştirecek bir anahtar olarak anahtar olarak bir dize kullanmalısınız.

İşte tüm sorun, ama ben şimdiye kadar fark budur olmayabilir.

Cevap 08/11/2018 saat 11:41
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more