2012-02-29 18 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

相关问题