无法设置cakephp AuthComponent sessionKey

时间:2014-06-11 13:04:00

标签: php cakephp authentication cakephp-2.4

我正在使用cakephp 2.4.7进行开发,我使用auth组件进行多次登录(用户和公司登录)。

我的目标是在sessionKey中设置正确的beforeFilter(Auth.User或Auth.Company)。 Auth.User是cakephp中的默认值。

AppController的:

public $helpers = array('Cache','Html','Session','Form');

public $components = array(
    'Security',
    'Cookie',
    'RequestHandler',
    'DebugKit.Toolbar',
    'Session',
    'Auth' => array(
        'loginRedirect' => array(
            'controller' => 'users',
            'action' => 'index'
        ),
        'logoutRedirect' => array(
            'controller' => 'users',
            'action' => 'login'
        ),
        'authError' => 'You must be loggedin to view this page.',
        'loginError' => 'Invalid user credentials.',
        'authorize' => array('Controller')
    )
);

public function beforeFilter() {

    $this->Auth->deny('*'); 
}

CompaniesController:

public function beforeFilter() {
    parent::beforeFilter();
    AuthComponent::$sessionKey = 'Company';
    //$this->Auth->sessionKey = 'Auth.Company';
    $this->Auth->authenticate = array(
        'Form' => array(
            'userModel' => 'Company', // set the new userModel
            'fields' => array('username' => 'email')
        )
    );
    $this->Auth->allow('register', 'login', 'logout');
}

登录工作正常,但验证会话仍为Auth.User。 (经debug($this->Auth->User());测试)

我做错了什么?如何正确设置AuthComponent::$sessionKey

1 个答案:

答案 0 :(得分:2)

今天我遇到了同样的问题,我已经跳到代码(here)来检查它为什么不适合我。

似乎你必须像这样设置它

public function beforeFilter()
{

    AuthComponent::$sessionKey = 'Auth.Company'; // static property so we have to 
    // access in static way so you want get strict errors
    ...
}

然后再次注销并登录用户。在您的操作中只需 var_dump() pr() $ this->会话 - >读取('验证')

Btw $ this-> Auth-> user()将始终通过[$ sessionKey]返回Auth中的数组,并为AuthComponent :: user()静态调用返回相同的数据。