2013-01-03 47 views
0

我正在嘗試將Facebook身份驗證集成到我的Cakephp 2.2.4應用程序中,並且一旦完成了facebook身份驗證,我正嘗試創建該用戶並手動登錄該用戶,但我發現雖然下面的代碼是創建一個auth會話,即$ this-> Auth-> user()包含所有數據,它不會將用戶登錄到應用程序中,即我無法訪問應用程序的其他功能Cakephp 2.x不會手動登錄

$user = $this->User->findById($user_id); 
     $this->Auth->login($user); 

這是我在用手動登錄並保存用戶不包含用戶名和密碼

這是我AppController.php

class AppController extends Controller { 
public $components = array(
'Session', 
'Auth'=>array(
    'loginRedirect'=>array('controller'=>'Users','action'=>'dashboard'), 
    'logoutRedirect'=>array('controller'=>'Users','action'=>'login'), 
    'authError'=>'You can\'t access that page', 
    'authenticate' => array(
     'Form' => array(
      'fields' => array('username' => 'email') 
     ),'Basic'), 
    'authorize'=>array('controller') 
    ), 
'RequestHandler'  
); 

public $helpers = array('Js' => array('Jquery'),'Html','Form'); 

public function isAuthorized($user){ 
    return TRUE ; 
} 

public function beforeFilter(){ 

    // $this->Auth->allow('index','view'); 
    // $this->set('logged_in',$this->Auth->loggedIn()); 
    // $this->set('current_user',$this->Auth->user()); 
} 

}

+0

如果它創建$ this-> Auth-> user()數據,我相信這意味着它們已登錄。登錄默認情況下不會授予對站點範圍內所有內容的權限。提供更多關於如何授予登錄用戶權限的代碼。 – Dave

+0

dave我已經給出了上面的appcontroller代碼,yes $ this-> Auth-> loggedIn()在該特定操作中顯示爲真,即,應用程序在Facebook身份驗證後被重定向,但在其他操作中$ this-> Auth-> loggedIn()顯示錯誤 –

回答

0

這是無關CakePHP的應用程序,但該插件我正在使用Facebook的哪個,這並沒有發佈數據

2

嘗試:

$this->Auth->login($user['User']); 
+0

我已經嘗試過此方法,也有其他方法,它顯示已登錄但無法訪問任何行動 –

+0

這對我有效!謝謝。 –

+0

完美的作品,謝謝! – dav

0

也許Auth組件仍然引用用戶名字段進行身份驗證而不是電子郵件。您可以嘗試更改爲用戶名。