即使我将timeout_in参数设置为20年,也可以设计会话超时

时间:2018-12-14 01:18:40

标签: ruby-on-rails heroku redis devise

我仅在生产环境Heroku中遇到会话超时问题。 甚至我将(selectionChange)="onChange($event)"中的optionSelectionChanges设置为timeout_in,并检查cookie的到期时间是2038年,但是当我在15分钟左右的时间内什么都不做时被迫注销。

config/initializers/devise.rb

此应用使用下面的20.years设计和管理会话数据。

config.timeout_in = 20.years

您是否知道为什么会这样? 这是版本

cache_store

感谢您的阅读!

2 个答案:

答案 0 :(得分:1)

您应将devise.rb放在config/initializers文件夹下。您所描述的内容表明Rails在引导过程中没有选择自定义timeout_in

请参阅https://github.com/plataformatec/devise#configuring-models进行Devise设置。

如果您想了解rails bootstrap的工作原理以及为什么该配置应放在config/initializers文件夹中,请参见https://guides.rubyonrails.org/initialization.html#railties-lib-rails-application-rb

答案 1 :(得分:0)

检查是否有~/config/initializers/session_store.rb配置可能会覆盖您的设计设置。代码可能看起来像这样:

Rails.application.config.session_store :cookie_store, {
  key: "_#{some-session-name-here}_session",
  expire_after: 15.minutes
}

请注意,您的应用程序使用Rails 5.2.1.1,并且session_store.rb已在Rails 5.1中删除。 session_store配置仍然有效,但是不会自动生成,等等。