Cia*_*her 45 session activerecord ruby-on-rails ruby-on-rails-3
这看起来很简单:我试图让我的rails Active Record会话在2分钟后超时.所以两分钟后我希望我的用户必须重新登录.
我刚刚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
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,或者至少我的会话似乎没有超时.我找不到很多关于Rails 3的方法,因为我知道Rails 2.x已经改变了.
有人可以帮我吗?
mor*_*itz 46
我认为您必须手动执行此操作,因为活动记录存储未实现expire_after选项.所以在你(我假设)过滤之前,你应该这样做:
def authenticate
if session[:logged_in]
reset_session if session[:last_seen] < 2.minutes.ago
session[:last_seen] = Time.now
else
... authenticate
session[:last_seen] = Time.now
end
end
Run Code Online (Sandbox Code Playgroud)
显然,这不完整,但它应该给你基本的想法.
更新:
从版本2.3开始,似乎功能IS存在于rails中.我在这里找到了相关的代码.这是AbstractStore,它应该作为所有派生类的基类.所以,正如dadooda所说,以下应该有效:
Some::Application.config.session_store :active_record_store, {
expire_after: 24.hours,
}
Run Code Online (Sandbox Code Playgroud)
Rav*_*dra 41
我以简单的方式做到了这一点你可以试试这个:
在你config/initializers/session_store.rb刚才这样做:
Yourapp::Application.config.session_store :cookie_store,
:key => "_yourapp_session",
:expire_after => 2.minutes
Run Code Online (Sandbox Code Playgroud)
这对我很好,希望也适合你.
| 归档时间: |
|
| 查看次数: |
47131 次 |
| 最近记录: |