【问题标题】:Change rails default cookie expiration time更改 rails 默认 cookie 过期时间
【发布时间】:2014-03-09 04:10:52
【问题描述】:

我知道保存cookie时如何更改过期时间,我想知道的是如何更改默认值。 我有很多句子设置分散在我的代码周围的 cookie,我必须将 所有这些 更改为在 30 天后过期,所以我更愿意更改将默认过期时间设置为 30 的内容天,以便它影响所有地方的所有 cookie。 提前致谢!

更新 尝试使用:

# config/initializers/session_store.rb
MyApp::Application.config.session_store :cookie_store, key: '_your_app_session', expire_after: 30.days

但仍然无法正常工作...我想我知道问题出在哪里。当我在保存它的那一刻设置 cookie 过期时,它会出现在 Firefox 和 Chrome 上的“响应 Cookies”下(这是它工作的时候)但其余的 cookie 出现在两个资源管理器的“请求 Cookies”下。问题是我不知道 Rails 是如何处理 Request/Response 的。

这是我保存 cookie 的方式,但不起作用。

cookies[:region] = params[:region]

这就是我让它工作的方式,但我更喜欢另一种方式来节省时间并让将来更容易编辑。

cookies[:region] = { value: params[:region], expires: 30.days.from_now }

更新 2:创建了一个新的 rails 应用程序来显示隔离的问题:https://github.com/jafuentest/newapp

【问题讨论】:

  • 您能否制作一个最小的 Rails 应用程序(在本例中只是一个控制器)来显示您遇到的问题,并将链接放入问题中?
  • 完成,您可以在这里查看:github.com/jafuentest/newapp

标签: ruby-on-rails cookies ruby-on-rails-4


【解决方案1】:

您可以将其保存在 session_store 中:

# config/initializers/session_store.rb
MyApp::Application.config.session_store :cookie_store, key: '_your_app_session', expire_after: 30.days

【讨论】:

  • 嘿!感谢您的帮助,我认为它有效,但我错过了一些东西。在 chrome 的“检查元素”菜单上,到期日期是从现在起 30 天。但是,如果我关闭浏览器并再次打开它,从 cookie 加载的值再次显示为空白。有什么想法吗?
  • 我使用了cookies[:region] = { value: params[:region], expires: 30.days.from_now },它成功了,所以这不是浏览器的错。还有其他想法吗?
  • 我尝试回到 Rails 3,但仍然一无所获。我认为问题不在于您给我的代码,我认为是其他问题。我更新了问题,更好地解释了正在发生的事情。
  • 对不起,如果我再问一遍,您是否将 MyApp::Application 更改为您的应用程序的真实名称?
  • 是的,那部分没问题。
猜你喜欢
  • 2015-09-07
  • 2013-09-30
  • 2015-02-09
  • 1970-01-01
  • 2013-07-26
  • 2012-11-25
  • 1970-01-01
  • 2012-12-12
  • 2013-03-09
相关资源
最近更新 更多