0

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

应用程序的一个模块应根据用户是否登录提供略有不同的内容。该模块应通过子域访问,例如 sub.domain.com。现在,如果我通过 domain.com 访问此模块,则可以。如果我通过 sub.domain.com 访问模块,即使用户登录,也会被视为未登录。

我的猜测是 sfguad 插件使用的 auth cookie 缺少 Domain: .domain.com 参数。我该如何改变呢?这个线程3207099似乎表明它是可能的。

谢谢!

4

1 回答 1

1

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

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

我很困惑,因为

  • 我首先认为这与 sfGuard 插件使用的 auth cookie 有关,但配置会话 cookie 的 Domain 足以实现我想要的。有人可以解释为什么吗?
  • 我在本地测试中使用了一个单词域,并且设置“.domain”最终不会出现在 cookie 的域中。看起来它必须至少是一个域和 tld,如“.domain.localhost”。
于 2013-10-18T16:57:53.253 回答