2使用CakePHP进行Auth会话

时间:2014-03-30 05:20:23

标签: php cakephp authentication

我的网站上有2个身份验证区域。   - 域/管理员(管理员区域)   - 域/客户(客户区)

管理员有不同的模型,客户有不同的模型。

我正在使用$ this-> Auth();我使用以下代码来识别用户是否已获得授权。

public function isAuthorized($user) {
    // Client ACL
    if ($this->params['controller'] == 'clients'):
        if (isset($user) && !empty($user['business_type'])) {
            return true;
        } else {
            return false;
        }
    endif;
}

这很好用。问题是,当我登录管理区域并转到客户区域URL时,它会显示我已登录。我希望管理区域和客户区域有2个不同的会话。

如何识别用户是否实际登录管理区域或客户区域。我想开发一种机制,管理员和客户端可以在同一时间从同一浏览器登录。

我也在管理区域使用管理员前缀,这就是管理区域的isAthorized代码存储在AppController.php中的原因

1 个答案:

答案 0 :(得分:2)

您必须使用AuthComponent :: $ sessionKey http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#AuthComponent :: $ sessionKey

由于您使用的是admin前缀,因此可以在AppController.php中为admin区域设置$ sessionKey。

示例:

AuthComponent::$sessionKey = 'Auth.Admin';

在客户端的控制器中,您可以为客户端创建另一个会话密钥。

AuthComponent::$sessionKey = 'Auth.Client';

这将解决问题。