JoomlaとCakePHP(1.3)アプリの間でSSOをコーディングしようとしています。ユーザーはJoomlaにログインし、リンクをクリックしてCakePHPアプリに移動し、同じユーザーでログインできる必要があります。
私のusers_controllerには、「joomlalogin()」というアクションがあり、Joomlaセッション変数を読み取り、joomlaユーザーがCakePHPアプリにすでに存在するかどうかを確認し、存在しない場合はユーザーを作成します。これはすべて機能します。
問題は、Auth-> login()を使用してユーザーを手動でログインできないように見えることです。フルユーザーを渡してみました。user_idを渡してみました。関数は「true」を返しますが、次のページに移動するとすぐにログインに失敗したようです。コードの1つのバージョンは次のとおりです。
$existing_user= $this->User->find('first', array('conditions' => array('User.joomla_userid' => $joomla_user->id)));
if ($existing_user && $this->Auth->login($existing_user)) {
$this->Session->setFlash('You have successfully logged in.');
//debug($this->Auth);
$this->redirect('/users');
}
フラッシュメッセージが表示され、リダイレクトが発生しますが、匿名ユーザーには「/ users」が許可されていないため、すぐに(通常の非sso)ログインフォームにリダイレクトされます。
ユーザーが実際にログインしていない場合、Auth-> login()が「true」を返すのはなぜですか。Auth-> User()を見ると、正しいユーザーデータが含まれており、リダイレクトが発生するまでユーザーがログインしていることがすべて示されます。 。これの原因は何でしょうか、または私が間違っていることは何ですか?