这似乎很简单:我试图让我的轨活动记录会话超时2分钟后。所以两分钟后,我希望我的用户不得不重新登录。在Rails 3中设置会话超时
我刚刚在本地开发机器上运行rails server
(即WebBrick)。
我知道这是什么做的config/initalizers/session_store.rb
下面的代码,但我不认为我有相当钉它:
CodedOn::Application.config.session_store :active_record_store
CodedOn::Application.configure do
config.action_controller.session = {:expire_after => 2.minutes}
end
这似乎并不工作,或者至少我的会议似乎没有超时。我无法找到很多关于Rails 3的方法来做到这一点,因为我知道事情已经从Rails 2.x中改变了。
有人可以帮我吗?
难怪我无法找到它:)感谢您的指针。 – 2011-05-02 20:56:23
这里的一个问题是,这个工作是如何进行的,例如当会话初始创建时调用'before_filter',也就是说,当用户首次通过身份验证时,'session [:last_seen]'如何再次被调用?如果它是一个authenticate before_filter,是不是只调用一次 - 在身份验证?我想我脑海里想的是,一旦创建了会话并且用户登录了,我该如何检查'session [:last_seen]',以便如果它超过了X分钟的数量,迫使他们重新登录,而不是在最初创建会话时进行重新登录。希望这是有道理的 – marcamillion 2011-10-10 08:11:33
我希望我得到你的问题:HTTP是无状态的。因此,网络服务器在任何两个请求之间都没有看到任何关系。但有些用例要求这种关系(例如认证)。在rails中,会话散列提供了这一点。但是控制器必须为每个请求读取会话散列,以便识别先前认证的用户。因此,在每次请求之前调用过滤器之前的'authenticate'。我希望这有帮助。 – moritz 2011-10-10 20:05:39