2013-05-05 123 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