设置 Rails cookie 的开始日期和到期日期
Posted
技术标签:
【中文标题】设置 Rails cookie 的开始日期和到期日期【英文标题】:Set start date and expiration date for Rails cookies 【发布时间】:2010-11-16 23:01:35 【问题描述】:如何将 Rails cookie 设置为在特定日期开始和/或过期?
【问题讨论】:
【参考方案1】:摘自Rails 5 documentation:
Cookie 是通过 ActionController#cookies 读取和写入的。
正在读取的 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"
[...]
设置cookies的选项符号有:
:expires
- 此 cookie 过期的时间,作为 Time 或 ActiveSupport::Duration 对象。[...]
【讨论】:
这一切都在文档中:api.rubyonrails.org/classes/ActionDispatch/Cookies.html @Senthil,如果您从另一篇文章中得到一些东西(在这种情况下,“原样”来自 rails 文档),请提供对来源的参考。 also :expires 选项应该是 Time 实例。cookies[:login] = value: "JX-122", expires: 3.months
会引发错误。但这不会。 cookies[:login] = value: "JX-122", expires: 3.months.from_now
详情见github.com/rack/rack/issues/864#issuecomment-104706555【参考方案2】:
您的问题可能与以下问题有关: How to I dynamically set the expiry time for a cookie-based session in Rails
其中一个 cmets 指向Deprecating SlideSessions:
"..如果需要设置有效期 通过所有控制器的会话 在您的应用程序中,只需添加 您的以下选项 配置/初始化程序/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 是可能的并且 完美无瑕……”
我希望这会有所帮助。 :)
【讨论】:
ActiveRecord 会话存储也可以这样做吗?【参考方案3】:值得注意的是,目前无法为 cookie 设置开始时间。 cookie 集总是立即激活。
【讨论】:
以上是关于设置 Rails cookie 的开始日期和到期日期的主要内容,如果未能解决你的问题,请参考以下文章