CakePHP-手动登录

CakePHP-手动登录,cakephp,authentication,Cakephp,Authentication,我有一个用CakePHP开发的应用程序,其中我使用AuthComponent进行身份验证和授权 我正在做一个用户可以使用Facebook在应用程序上注册的动作 我使用HybridAuth将Facebook与我的应用程序集成,并获得用户数据信息进行操作 现在,我正确地接收到了数据,但是当我尝试强制手动登录并将用户重定向到授权页面时,用户收到了身份验证错误 我的代码: $this->Auth->login($user_exists['User']); $this->redirect

我有一个用CakePHP开发的应用程序,其中我使用AuthComponent进行身份验证和授权

我正在做一个用户可以使用Facebook在应用程序上注册的动作

我使用HybridAuth将Facebook与我的应用程序集成,并获得用户数据信息进行操作

现在,我正确地接收到了数据,但是当我尝试强制手动登录并将用户重定向到授权页面时,用户收到了身份验证错误

我的代码:

$this->Auth->login($user_exists['User']);
$this->redirect($this->Auth->redirect());
其中$user_存在['user']等于: $user\u exists=$this->user->findByUsername($profile->email)

有人能告诉我我做错了什么,为什么CakePHP不接受我的数据进行强制登录

谢谢

其中,$user\u exists['user']等于:$user\u exists

这就是你的问题所在。 这些值不能相等,因为后者包含具有

'User' => array(...)
第一个直接是数组(…)

因此,请确保直接传入(平面)用户数组

->login($data)


您使用的是什么版本的CakePHP?还有,你是这样试的吗<代码>$this->Auth->login($user\u存在)?我不熟悉
HybridAuth
插件,因此无法回答这是否是与该插件结合使用的正确方法
$user\u exists['user']
数组到底包含什么?添加
debug($user_存在['user'])在登录方法之前找到。存在$user_的调试:我使用的是CakePHP v2.3.4。我只尝试了$user\u exists,on->login()。HybridAuth只是从FacebookAPI获取用户信息,与AuthComponent无关。我看不出有什么问题。您确定用户有权访问他们被重定向到的页面吗?检查会话是否是通过添加
debug($this->Auth->user())创建的;退出在登录之后但在重定向之前。如果显示用户信息,则用户已登录,您的问题是访问控制。我尝试使用$user\u仅存在,使用$data但未工作。如果我注释$this->Auth->login(),然后调试AuthComponent::user(),我将收到反用户数据。与AuthComponent::login()类似,仅对操作进行身份验证。如果我重定向用户,身份验证将不起作用。但是如果我再次返回到connect操作,身份验证就会起作用。疯了,不是吗?!那么您在调用login()方法时已经登录了?在这种情况下,该方法将返回false,手动登录可能不起作用。不,当我调用login()方法时,我没有登录,因为当我重定向到受限区域时,AuthComponent会说我没有登录。“如果我对$this->Auth->login()进行注释,然后尝试调试AuthComponent::user(),我将收到反用户数据。”也就是说,你已经登录了。。。也许在脚本执行的某个时候,回调已经做到了这一点。
$data = array('id' => 1, 'username' => 'foo, ...)