1

Agiletoolkit Auth/basic クラスを使用すると、制限なしでログインを試行できます。そして、ログイン試行の失敗回数を制限する方法を探しています。このクラスのいくつかのメソッドをオーバーライドしようとしましたが、ajax リロードを使用しているため、php コードが正しく実行されません。

どんな提案でも大歓迎です。

どうもありがとう、

4

2 に答える 2

1

AfterLoad フックを使用してセッションまたは Cookie に Model_User (通常は Auth で使用される) の使用回数を保存し、必要な場所で確認できると思います。

おっとっと。ログインに失敗しました。したがって、モデルはロードされません。ログインフォームのボタンのクリック数をカウントし、それをどこかに保存するだけです (Cookie、データベース)。したがって、独自のログインフォームを作成し、フォームが送信されたときに次のような条件を追加します。

    $m = $this->add('Model_User');

    $f = $this->add("Form");
    $f->setModel($m, array('email', 'password'));
    $f->addSubmit("Log In");

    if ($f->isSubmitted()){
        //Limmiting
        if($_COOKIE[$this->api->name."_count_failed_login"] >= 5/*Here's you limit number*/){
            /*redirect or something else*/
        }

        if (/*here should be you condition*/){
            $_COOKIE[$this->api->name."_count_failed_login"] = 0;
            $this->api->auth->login($f->get("email"));
            $f->js()->univ()->redirect("index")->execute();
        }else{
            /* when login is failed*/
            if($_COOKIE[$this->api->name."_count_failed_login"]){
                $_COOKIE[$this->api->name."_count_failed_login"]++;
            }else{
                $_COOKIE[$this->api->name."_count_failed_login"] = 1;
            }
            $this->js()->univ()->alert('Wrong username or password')->execute();
        }
    }

私はそれをチェックしませんでした。たぶん、いくつかの調整が必要です。ただのアイデア。

それが役立つことを願っています。

于 2013-10-04T20:09:50.513 に答える