2012-02-29 17 views
0

我有我的會話變量正在通過這種保存到所有子域上我的網站:有沒有辦法指定cookie應保存到的子域? (而不是一個或全部)

Site::Application.config.session_store(
    :cookie_store, 
    :key => '_site_session', 
    :domain => Settings.domain, 
# :secure => (Rails.env.production? || Rails.env.staging?), 
    :http_only => true) 

其中Settings.domain =「.site.com」

然而,我的網站設置的方式,每個帳戶都有自己的子域名。所以這導致了一個很大的錯誤,因爲當有人登錄時,他們可以進入任何其他子域,並有權訪問該帳戶(並非所有的信息,但一些...)。

所以,我想要做的是讓人們與公共子域(signin.site.com和signup.site.com)以及他們自己的個人子域(account1.site.com)共享會話變量。但是,這些是唯一應該能夠分享的人。有沒有一種方法來指定?

回答

0

我假設你處理子域名登錄像signin.site.com。因此,不允許將Cookie設置爲* .site.com

處理身份驗證並從http://site.com設置cookie應解決問題。

+0

site.com已被用於我的營銷頁面......但我想我可以嘗試將它放在site.com/login。然而,那麼會話將不會從site.com持續到account1.site.com,因爲它是一個不同的子域,這就是我所需要的。我正在考慮在application_controller中創建一個before_filter來基本檢查current_account.subdomain == request.subdomain ...但不會有人能夠更改他們的current_account信息來解決這個問題嗎? – 2012-02-29 18:22:46

+0

該cookie也被提供給account1.site.com以及它已被設置爲.site.com。確保您沒有使用www.site.com。 – iltempo 2012-02-29 18:26:22

+0

對不起,我很困惑這個評論...你是什麼意思?我創建了一個before_filter來檢查用戶是否在正確的帳戶上,是否有任何方式來操縱會話cookie(我相信加密)嘗試訪問其他人的帳戶? – 2012-02-29 18:34:37

相關問題