我有两个应用程序都运行Zend Framework MVC应用程序的单独实例。它们托管在不同的子域中:
news.mydomain.com
member.mydomain.com
我在member.mydomain.com
上使用Zend_Auth来处理身份验证。
如何在news.mydomain.com
上配置ZF以捕获member.mydomain.com
中分配的身份验证信息?
我知道我们可以配置cookie的“域”参数,但是在Zend_Auth中我在哪里/如何做?
谢谢!
答案 0 :(得分:3)
如果在两个应用程序中将Zend_Session名称空间设置为相同的名称空间,则应该能够执行此操作。我相信你在第一次实例化时设置它,例如:
$sess = new Zend_Session("Mynamespace");
只要两台应用程序在同一台机器上运行,或者您发生了一些跨系统会话(例如,在多台机器上进行了memcached),它们都应该能够访问相同的会话变量。
如果您确实找到了设置域的位置,请尝试将其设置为:
.mydomain.com
而不是
mydomain.com
我记得在我的安装中有多个子域发生了一些奇怪现象,而这似乎解决了这个问题。
编辑:我找到了为用户会话设置域名的地方 - 奇怪的是,它在Zend_Session中。
答案 1 :(得分:0)
正如Brett Bender的回答快速更新。为了实现这一点,我目前只使用:
Zend_Session::setOptions(array(
'cookie_domain' => '.mydomain.com',
'name' => 'MySessionNamespace',
));
我在我的引导程序中设置了这个设置,但它可以在会话开始之前的任何地方调用。