我正在尝试在 Joomla 和我的 CakePHP (1.3) 应用程序之间编写 SSO。用户应该能够登录 Joomla,单击链接转到 CakePHP 应用程序并使用同一用户登录。
在我的 users_controller 中,我有一个名为“joomlalogin()”的操作,我在其中读取 Joomla 会话变量,检查 joomla 用户是否已存在于我的 CakePHP 应用程序中,如果不存在则创建用户。这一切都有效。
问题是我似乎无法使用 Auth->login() 手动登录用户。我尝试传递完整用户,尝试传递 user_id。该函数返回“true”,但当我进入下一页时,登录似乎失败了。这是代码的一个版本:
$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');
}
出现闪烁消息,重定向发生,但它立即被重定向到(常规非 sso)登录表单,因为匿名用户不允许使用“/users”。
如果用户没有真正登录,为什么 Auth->login() 返回“true”。当我查看 Auth->User() 时,它包含正确的用户数据,一切都表明用户已登录,直到重定向发生. 知道这可能是什么原因或我做错了什么吗?