Symfony sfGuardUser在多个子域上进行单一身份验证

时间:2013-10-18 15:04:31

标签: php cookies symfony-1.4 sfguard

我正在使用symfony 1.4.20和sfGuardUser插件。我有几个子域共享同一个应用程序。

根据用户是否登录,应用程序的一个模块应该提供稍微不同的内容。应该通过subdomain访问此模块,例如sub.domain.com。 现在,如果我通过domain.com访问此模块,这是有效的。如果我通过sub.domain.com访问模块,则即使用户是,也会看到用户未登录。

我的猜测是sfguad插件使用的auth cookie缺少一个Domain:.domain.com参数。我怎么能改变呢? 这个帖子3207099似乎表明它是可能的。

谢谢!

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。在/ apps / my_app / config下的factories.yml文件中添加session_cookie_domain参数,如:

  storage:
    class: sfSessionStorage
    param:
      session_name: symfony
      session_cookie_domain: '.domain.localhost'

我很困惑,因为

  • 我首先想到这与使用的auth cookie有关 sfGuard插件,但配置会话cookie的域就足够了 实现我想要的。有人可以解释原因吗?
  • 我使用仅限单字的域进行本地测试 并且设置'.domain'不会在cookie的域中结束。容貌 喜欢它必须至少是一个域,并且像'.domain.localhost'一样。