2013-05-05 81 views
0

我有一个使用CakePHP开发的应用程序,我使用AuthComponent进行身份验证和授权。CakePHP - 手动登录

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

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

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

我的代码:

$this->Auth->login($user_exists['User']); 
$this->redirect($this->Auth->redirect()); 

其中$ user_exists [ '用户']等于: $ user_exists = $这个 - >用户 - > findByUsername($简介 - >电子邮件);

有人可以告诉我我做错了什么,为什么CakePHP不接受我的数据来强制登录?

谢谢!

+0

?另外,你是否像这样尝试; '$这个 - > Auth->登录($ user_exists);'?我不熟悉'HybridAuth'插件,所以如果这是与该插件结合使用的正确方法,则无法回答 – thaJeztah 2013-05-05 07:48:48

+0

'$ user_exists ['User']'数组究竟包含什么?在登录方法之前添加'debug($ user_exists ['User']);'查找。 – 2013-05-05 12:53:05

+0

$ user_exists的调试:http://bin.cakephp.org/saved/102118 我正在使用CakePHP v2.3.4。 我试过$ user_exists,在 - > login()。 HybridAuth只是从Facebook API获取用户信息,与AuthComponent无关。 – 2013-05-05 14:30:06

回答

0

其中$ user_exists [ '用户']等于:$ user_exists

那是你的问题就在这里。 那些不能等于因为后者包含

'User' => array(...) 

,第一个深刻的阵列直接数组(...)

所以一定要确保你的(平面)用户阵列中直接传递。

->login($data) 

$data = array('id' => 1, 'username' => 'foo, ...) 
您正在使用什么版本的CakePHP的
+0

我只用$ user_exists和$数据尝试过,但没有奏效。 如果我评论$ this-> Auth-> login(),然后尝试调试AuthComponent :: user(),我会收到用户数据。 就像AuthComponent :: login()将认证仅限于动作。如果我重定向用户,身份验证不起作用。但是,如果我再次回到连接操作,身份验证就起作用。 疯了,不?? – 2013-05-05 14:30:48

+0

所以当你调用login()方法时你已经登录了?在这种情况下,该方法将返回false,手动登录可能不起作用。 – mark 2013-05-05 17:45:48

+0

不,我没有登录时,我调用登录()方法,因为当我重定向到一个限制区域,AuthComponent说我没有登录。 – 2013-05-05 17:51:34