设置Rails cookie的开始日期和到期日期

时间:2009-08-05 09:40:10

标签: ruby-on-rails cookies

如何设置Rails cookie在特定日期开始和/或到期?

3 个答案:

答案 0 :(得分:195)

摘自Rails 5 documentation

  

通过ActionController#cookies读取和写入Cookie。

     

正在读取的cookie是随请求一起收到的cookie,正在写入的cookie将随响应一起发送出去。读取cookie不会使cookie对象本身返回,只会获取它所拥有的值。

     

写作的例子:

# Sets a simple session cookie.
# This cookie will be deleted when the user's browser is closed.
cookies[:user_name] = "david"

# Sets a cookie that expires in 1 hour.
cookies[:login] = { value: "XJ-122", expires: 1.hour }

# Sets a cookie that expires at a specific time.
cookies[:login] = { value: "XJ-122", expires: Time.utc(2020, 10, 15, 5) }

# Sets a "permanent" cookie (which expires in 20 years from now).
cookies.permanent[:login] = "XJ-122"
     

[...]

     

设置Cookie的选项符号为:

     
      
  • :expires - 此Cookie过期的时间,作为Time或ActiveSupport :: Duration对象。
  •   
     

[...]

答案 1 :(得分:17)

您的问题可能与此问题有关: How to I dynamically set the expiry time for a cookie-based session in Rails

其中一条评论指向Deprecating SlideSessions

  

“..如果您需要设置有效期   通过所有控制器进行会话   在您的应用程序中,只需添加   以下选项   配置/ intializers / session_store.rb   文件:

:expire_after => 60.minutes
     

如果你需要设置不同的   到期时间不同   控制器或动作,使用   以下代码在行动或一些   的before_filter:

request.session_options = request.session_options.dup
request.session_options[:expire_after]= 5.minutes
request.session_options.freeze
     

仅需要重复哈希   因为它已经冻结了   点,即使修改了at   至少:expire_after是可能的   完美无瑕地工作......“

我希望有所帮助。 :)

答案 2 :(得分:3)

值得注意的是,截至目前,无法为Cookie设置开始时间。 Cookie集始终处于活动状态。