Ran*_*ess 5 firefox google-chrome ruby-on-rails devise warden
在Rails 4.2应用程序中,我已经Devise在已激活Rememberable和Timeoutable模块的应用程序上安装.
当用户登录,选择Remember Me和关闭浏览器选项卡时,他们在打开新选项卡并返回应用程序时会保留其登录名.这与Chrome,Firefox和Safari一致.
但是,当用户登录,选择Remember Me和关闭浏览器应用程序时,他们会在重新打开浏览器应用程序并打开新的浏览器选项卡时从应用程序中注销.这与Chrome和Firefox一致.另一方面,Safari可以按需运行.
当用户关闭Chrome和Firefox浏览器应用程序时,是否可以保留用户登录凭据?我怀疑这是一个cookie问题,但我不知道我需要更改哪些设置以保持cookie在浏览器应用程序关闭之间有效.
Windows和Mac平台之间的行为是一致的.
Settings > Content settings > Cookies > Allow local data to be set = selected
Run Code Online (Sandbox Code Playgroud)
# models/user.rb
devise :database_authenticatable, :recoverable, :rememberable, :registerable, :trackable, :validatable, :async, :timeoutable
Run Code Online (Sandbox Code Playgroud)
# note: User model does have remember_created_at field installed
# config/initializers/devise.rb
Devise.setup do |config|
...
config.remember_for = 2.weeks
config.extend_remember_period = true
config.rememberable_options = { secure: true }
config.timeout_in = 2.weeks
config.expire_auth_token_on_timeout = false
...
end
Run Code Online (Sandbox Code Playgroud)
小智 0
这也发生在我身上,解决方法是将expire_after手动添加到config\initializers\session_store.rb.
Rails.application.configure do
config.session_store :cookie_store, key: '_my_app_session', expire_after: 2.years
end
Run Code Online (Sandbox Code Playgroud)
注意:替换_my_app_session为您的 cookie 名称,您可以在生产或登台中打开页面时在浏览器上检查该名称right click > inspect > application > cookies