Nasıl x CAPTCHA yönlendirmek için CakePKP'deki dairesel yönlendirmeler olmadan teşebbüs başarısız oldu?

0 Cevap php

Ben çekirdek Auth bileşeni kullanıyorum. Ben tüm izinlere yöneten kullanıcı giriş oluşturduk. Ben giriş izleme uygulanması am yolu app_controller içinde $this->Auth->user() için kontrol etmektir. Her zaman app_controller döngüleri beforeFilter() fonksiyonu ve !$this->Auth->user(), bu Captcha.LoginAttempts oturum değişkeni artacaktır. Captcha.LoginAttempts> 3 olduğunda, ben bir insan olduğunuzu onaylamak için kullanıcı gerektiren captcha ekran görüntüleyerek, captcha'lar denetleyiciye yönlendirmek istiyorum. (Stackoverflow bunu nasıl benzer).

Ben sayfada pasta çerçevesinde şey yere bir eleman kullanarak veya başvuru ediyorsam ben yaşıyorum konudur, bu yönlendirmeyi vurdu ve her erişimde eleman / bileşen gerçek denetleyicisi / eylem harici çağrıldığını için sonsuz bir dairesel yönlendirme neden olacaktır . Bu uygulamak için daha iyi bir yolu var mı?

İşte ben ile karıştırmasını olmuştur gerçek kodudur. Ama temelde (IMO) berbat:

// this is in the app_controller beforeFilter() method.

if($this->Auth->user()) {
            $this->Session->delete('Captcha');
        } else {
            $this->Session->write('Captcha.LoginAttempts', $this->Session->read('Captcha.LoginAttempts') + 1);
            if ($this->Session->read('Captcha.LoginAttempts') > 3) {
                if (!$this->Session->read('Captcha.controller')) {
                    $this->Session->write('Captcha.controller', $this->params['controller']);
                    $this->Session->write('Captcha.action', $this->params['action']);
                }
                if ($this->Session->read('Captcha.fail') !== 'true') { // avoid circular reference redirects
                    $this->Session->write('Captcha.fail', 'true');
                    $this->redirect(array('controller' => 'captchas', 'action' => 'index'));
                }
            }
        }

Sen ben döngüsel başvuruyu önlemek için deneyin ne görebilirsiniz. Ama sonra kullanıcı sadece giriş sayfasına gidebiliriz ve Captcha.fail oturum değişkeni zaten ayarlanmış olduğundan, bu yönlendirmeyi göz ardı edecektir. Bu uygulamak için daha şık bir yolu olmalı. Herkes?

0 Cevap