我有两个子域名。每个子域都有自己的经过身份验证的用户数据库。我正在使用
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity()){ }
检查用户登录凭据。它完美地适用于每个子域。但是,当我登录到一个子域并尝试访问另一个子域中的“受限制”页面而不从第一个子域注销时,它会通过我。基本上,第一个子域的'auth'会话在第二个子域的'$ auth-> hasIdentity()'中返回true。我怎么解决这个问题?
编辑:可能使用不同的auth会话名称可能会解决它,但由于我在这两个子域之间共享代码,这不是可行的选择。
答案 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);