当前位置:  开发笔记 > 编程语言 > 正文

如何在Rails中动态设置基于cookie的会话的到期时间

如何解决《如何在Rails中动态设置基于cookie的会话的到期时间》经验,为你挑选了2个好方法。

我目前正在为我的Rails应用程序使用基于ActiveRecord的会话存储,我有一个后台进程,每30分钟清除一次非活动会话.

我想切换到Rails新的基于cookie的会话存储,但是如何将会话的到期时间设置为30分钟,而不是默认的"会话结束时"值?



1> Graeme Mathi..:

我在办公室里谈话后偶然发现了这个问题.仅仅为了完整起见,我发现可以在一段时间不活动后使会话过期,并且它已内置到Rails中.在config/environment.rb中,执行以下操作:

config.action_controller.session = {
  :key          => 'whatever',
  :secret       => 'nottellingyou',
  :expire_after => 30.minutes
}

检查lib/action_controller/session/cookie_store.rb#114中的(显然未记录的)选项.看起来自从2008年12月转向Rack会议以来它一直存在.


对于Rails 3,语法为:Rails.application.config.session_store:cookie_store,:key =>"whatever",:expire_after => 30.minutes

2> Daniel Beard..:

理想情况下,您需要向environment.rb添加类似这样的内容:

session :session_expires => 1.day.from_now

但这不起作用,因为代码只在APP启动时运行一次,因此第二天所有会话都是在过去的过期时创建的.

我通常session_expires在未来(6个月)设定一段时间.然后手动设置并检查应用程序控制器上的session[:expires]日期,before_filter并在该日期过后重置会话.

这使得在登录时添加"让我登录___"选项非常容易,您只需设置即可 session[:expires] = Time.now + ___

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有