Authコンポーネントを使用してログインするとCake 2.0.5では、Cakeはすべての関連モデルを取得しているようです。多くのアソシエーションでは、ログインに時間がかかります。CakePHP 2.0.5認証とユーザーモデル再帰的な問題
この問題は、this ticketで最初に確認されましたが、「解決策」はあまり意味がありません。ドキュメントには何も見つかりません。
2.0でFormAuthenticateクラスを使用すると、サブクラス化して を追加することができます。再帰レベルはかなり簡単だと思います。
これを経験した人は誰ですか?
以下 - サンプルコード:
標準のログイン方法:
public function login() {
$this->User->recursive = -1; // does nothing
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash('Invalid username or password.');
}
}
とクエリケーキは私のアプリのために作成されています
SELECT `User`.`id`, `User`.`username`, `User`.`password`, `User`.`role`, `User`.`created`, `User`.`modified`, `Band`.`id`, `Band`.`name`, `Band`.`genre`, `Band`.`location`, `Band`.`influences`, `Band`.`founded`, `Band`.`bio`, `Band`.`created`, `Band`.`modified`, `Band`.`status`, `Band`.`website`, `Band`.`email`, `Band`.`contact_number`, `Band`.`user_id`, `Member`.`id`, `Member`.`user_id`, `Member`.`first_name`, `Member`.`last_name`, `Member`.`display_name`, `Member`.`dob`, `Member`.`gender`, `Member`.`bio`, `Member`.`influences`, `Member`.`band_id` FROM `users` AS `User` LEFT JOIN `bands` AS `Band` ON (`Band`.`user_id` = `User`.`id`) LEFT JOIN `members` AS `Member` ON (`Member`.`user_id` = `User`.`id`) WHERE `User`.`username` = 'admin' AND `User`.`password` = 'dcec839a9258631138974cbccd81219f1d5dfcfa' LIMIT 1
あなたはそれがすべてのフィールドを取得しています見ることができるように、すべてのモデルに参加してください。私のアプリには2つの追加の関連付けしかありませんが、非常に複雑なアプリケーションではこれがどのように問題になるかを見ることができます。
本当に、それはちょうどユーザーテーブルである必要があります。 recursive
の設定は、まったく何もしていないようです。
完璧に見えます。家に帰るときに試してみるよ。ケーキがこの機能を導入したことはちょっと奇妙に思えます。この機能は最初は役に立たず、クラスを拡張して修正する必要があります。ありがとう – Ross