这似乎很简单:我正试图让我的rails活动记录会话在2分钟后超时。因此,两分钟后,我希望我的用户必须重新登录
我只是在本地开发机器上运行rails服务器(即WebBrick)
我知道这与config/initalizers/session\u store.rb中的以下代码有关,但我认为我还没有完全理解:
CodedOn::Application.config.session\u存储:活动\u记录\u存储
CodedOn::Application.configure do
config.action\u controller.session={:expire\u after=>;2.minutes}
终止
这似乎不起作用,或者至少我的会话没有超时。我找不到太多关于Rails3的方法来实现这一点,因为我知道Rails2.x已经发生了变化
有人能帮我吗
我认为您必须手动执行此操作,因为active record store没有实现expire_after选项。因此,在您的(我假设)before筛选器中,您应该执行以下操作:
def身份验证
如果会话[:已登录]
重置会话(如果会话[:上次看到])<;2分钟前
session[:last_seen]=Time.now
其他的
... 证明…是真实的
session[:last_seen]=Time.now
终止
终止
显然,这并不完整,但它应该给你一个基本的想法
更新:
从2.3版开始,rails中就出现了这一功能。我在这里找到了相关的代码。这是AbstractStore,它应该作为所有派生类的基类。因此,正如达杜达所建议的,以下措施应该奏效:
Some::Application.config.session\u store:active\u record\u store{
过期时间:24.00小时,
}