Rails 3 - 更改为session_store时的“无限”会话:domain => :所有

时间:2011-03-07 03:32:11

标签: ruby-on-rails ruby-on-rails-3 session logout session-cookies

我目前有基于cookie的会话。我试图允许使用相同的会话访问我系统上的所有子域,因此用户只需登录一次并通过我的站点(section1.mysite.com,section2.mysite.com等)授予访问权限。

我更新了我的config / initializers / session_store.rb,如下所示:

 Mysite::Application.config.session_store :cookie_store, :key => '_mysite_session', :domain => :all
 #Mysite::Application.config.session_store :cookie_store, :key => '_mysite_session'

注释掉的线显示了我以前的所作所为。现在,如果我在重新启动服务器时注销(没有保存cookie会话),这种方法很有效。但是,如果我有第一次配置的cookie会话,当我切换到:domain =>所有,我不能破坏那个会话。用户无限期登录,因为会话不会被破坏。用户无法从注册会话配置中登录的会话中注销,并且一旦新配置到位,他们就会尝试注销。

我尝试过的事情: *更改security_token似乎没有帮助 *更改session_store键似乎没有帮助(我对此感到困惑......我认为它应该工作) *对于我的生活,我无法找到如何手动删除会话

无论我做什么,在我做出此更改之前登录的任何人都无法注销。

提前感谢您的帮助! 本

1 个答案:

答案 0 :(得分:1)

:domain选项不应该是复数,如:domains

在你的情况下,那样做:

Mysite::Application.config.session_store :cookie_store,
  :key => '_mysite_session', :domains => :all

为了摆脱持久性会话,您可能希望清除浏览器cookie。

<强>更新

要删除用户cookie,请编辑以下Rails文件:

应用/配置/初始化/ secret_token.rb:

Mysite::Application.config.secret_token= 'XXXXXXXXX...XXXXXXXXX'