在 Rails 4.2
申请,我有Devise
安装在带有 Rememberable
的应用程序上和 Timeoutable
模块激活。
当用户登录时,选择 Remember Me
, 并关闭浏览器 标签 ,当他们打开一个新的 时,他们的登录信息会被保留。标签 并返回应用程序。这与 Chrome、Firefox 和 Safari 一致。
但是,当用户登录时,选择 Remember Me
并关闭浏览器应用 ,他们在重新打开浏览器时退出应用程序应用 并打开一个新的浏览器选项卡。这与 Chrome 和 Firefox 一致。另一方面,Safari 可以按需要工作。
用户关闭 Chrome 和 Firefox 浏览器时是否可以保留用户登录凭据 应用程序 ?我怀疑这是一个 cookie 问题,但我不知道需要更改哪些设置才能使 cookie 在浏览器之间保持有效 应用 关闭。
Windows 和 Mac 平台之间的行为是一致的。
配置
Chrome
Settings > Content settings > Cookies > Allow local data to be set = selected
服务器
客户 1
客户 2
用户模型
# models/user.rb
devise :database_authenticatable, :recoverable, :rememberable, :registerable, :trackable, :validatable, :async, :timeoutable
设计配置
# 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
最佳答案
这也发生在我身上,解决方法是添加 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
注意:替换_my_app_session
使用您的 cookie 名称,您可以在生产或暂存中打开页面时在浏览器上查看 right click > inspect > application > cookies
关于ruby-on-rails - 在 Chrome/Firefox 浏览器应用程序关闭后,Devise Rememberable 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215697/