如何设置Rails cookie在特定日期开始和/或到期?
答案 0 :(得分:195)
通过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集始终处于活动状态。