0

Googleの検索を使用して解決策を見つけようとしましたが、まだ何も役に立ちませんでした。問題は単純です。ユーザー認証に別のモデルを使用したいと思います。マニュアルが私たちに示している方法は、どういうわけか、機能しません。

私のAppControllerは次のようになります。

public $components = array(
        'Auth',
        'DebugKit.Toolbar'
    );

    public function beforeFilter()
    {
        parent::beforeFilter();
        if (isset($this->request->params["intranet"]) && $this->request->params["intranet"] == 1) {
            $this->Auth = array(
            "loginAction" => array(
                "intranet" => true,
                "controller" => "employees",
                "action" => "login"
            ),
            "authenticate" => array(AuthComponent::ALL => array("userModel" => "Employee"))
        );
            $this->layout = "intranet";
        }
    }

どのURLを開くかは関係ありません。CakePHPは常に私を/users/loginにリダイレクトします。もちろん、コントローラーでparent :: beforeFilter()を実行します。

編集: userModelを誤解しているようですが、loginActionはここでは正しいキーワードのようですが、array( "controller" => "employees"、 "action" => "login")に変更した後も、/にリダイレクトされます。ユーザー/ログイン...

4

1 に答える 1

0

なんてこった、私はとても愚かです...これを読んだ後、ほとんどのプログラマーはすでにfacepalmを持っていると思いますが、同じ問題に苦労している可能性のある新しいCakePHP/PHP開発者のために:

上記のコードでは、$this->Auth を配列でオーバーライドしています。ソリューション:

$this->Auth->loginAction = array(
                "intranet" => true,
                "controller" => "employees",
                "action" => "login"
            );
            $this->Auth->authenticate = array(AuthComponent::ALL => array("userModel" => "Employee"));
于 2013-03-17T22:02:07.390 に答える