Zend Framework Zend_auth会话变得混乱

时间:2009-12-23 07:36:53

标签: zend-framework authentication session login

我有两个子域名。每个子域都有自己的经过身份验证的用户数据库。我正在使用

$auth = Zend_Auth::getInstance();
if($auth->hasIdentity()){ }

检查用户登录凭据。它完美地适用于每个子域。但是,当我登录到一个子域并尝试访问另一个子域中的“受限制”页面而不从第一个子域注销时,它会通过我。基本上,第一个子域的'auth'会话在第二个子域的'$ auth-> hasIdentity()'中返回true。我怎么解决这个问题?

编辑:可能使用不同的auth会话名称可能会解决它,但由于我在这两个子域之间共享代码,这不是可行的选择。

2 个答案:

答案 0 :(得分:1)

您应该将身份验证Cookie限制为当前子域。

答案 1 :(得分:1)

在你的Bootstrap顶部做某个地方

protected function _initModifiedSession()
{
    if ($this->hasPluginResource('session'))
    {
        $resourcesOptions = $this->getOption('resources');
        $resourcesOptions['resources']['session']['cookie_domain'] = $_SERVER['HTTP_HOST'];
        $this->setOptions($resourcesOptions);
        $this->bootstrap('session');
    }
}

UPDATE1
没有Zend_Application

    $sessionOptions = array(
        'cookie_domain' => $_SERVER['HTTP_HOST']
    );
    Zend_Session::setOptions($sessionOptions);