如何配置Zend_Auth以支持多个子域?

时间:2009-04-22 03:27:18

标签: php zend-framework

我有两个应用程序都运行Zend Framework MVC应用程序的单独实例。它们托管在不同的子域中:

news.mydomain.com
member.mydomain.com

我在member.mydomain.com上使用Zend_Auth来处理身份验证。

如何在news.mydomain.com上配置ZF以捕获member.mydomain.com中分配的身份验证信息?

我知道我们可以配置cookie的“域”参数,但是在Zend_Auth中我在哪里/如何做?

谢谢!

2 个答案:

答案 0 :(得分:3)

如果在两个应用程序中将Zend_Session名称空间设置为相同的名称空间,则应该能够执行此操作。我相信你在第一次实例化时设置它,例如:

$sess = new Zend_Session("Mynamespace");

只要两台应用程序在同一台机器上运行,或者您发生了一些跨系统会话(例如,在多台机器上进行了memcached),它们都应该能够访问相同的会话变量。

如果您确实找到了设置域的位置,请尝试将其设置为:

.mydomain.com

而不是

mydomain.com

我记得在我的安装中有多个子域发生了一些奇怪现象,而这似乎解决了这个问题。

编辑:我找到了为用户会话设置域名的地方 - 奇怪的是,它在Zend_Session中。

Zend_Session Configuration Options

答案 1 :(得分:0)

正如Brett Bender的回答快速更新。为了实现这一点,我目前只使用:

Zend_Session::setOptions(array(
    'cookie_domain' => '.mydomain.com',
    'name' => 'MySessionNamespace',
));

我在我的引导程序中设置了这个设置,但它可以在会话开始之前的任何地方调用。