2013-10-18 49 views
0

我在sfGuardUser插件中使用了symfony 1.4.20。我有幾個共享相同應用的子域名。Symfony sfGuardUser在幾個子域上的單一認證

根據用戶是否登錄,應用程序的一個模塊應該提供稍微不同的內容。這個模塊應該通過一個子域來訪問,比如說sub.domain.com。 現在,如果我通過domain.com訪問此模塊,這可以工作。如果我通過sub.domain.com訪問模塊,即使他是用戶,也會被視爲未登錄。

我的猜測是sfguad插件使用的auth cookie缺少Domain:.domain.com參數。我該如何改變它? 此線程3207099似乎表明這是可能的。

謝謝!

+0

您可以使用大多數瀏覽器確認Cookie可以使用哪些子域,例如, Firefox中的Cookies窗口。先檢查一下? – halfer

+0

有主機:www.domain.com和路徑:'/'但沒有域參數。 – flm

回答

1

我找到了解決方案。在factories.yml文件文件中添加session_cookie_domain參數下的/應用/程序my_app /配置,如:

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

我有困惑,因爲

  • 我首先想到這是與由所使用的身份驗證的cookie sfGuard插件,但配置會話cookie的域是足夠的 達到我想要的。有人可以解釋爲什麼?
  • 我對本地測試使用了一個僅包含一個字的域名 ,並且設置'.domain'不會在cookie的域中結束。看起來像是 ,它必須至少有一個域名,像'.domain.localhost'。