2013-01-03 48 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组件仍然引用用户名字段进行身份验证而不是电子邮件。您可以尝试更改为用户名。