0

用户关闭浏览器时如何自动退出?清除 gem 中是否有任何配置更改可以实现这一点。

4

1 回答 1

0

创建 Cookie - 在用户机器上创建或设置 cookie,该 cookie 具有 cookie 名称、cookie 值和 cookie 应自动删除的时间(EXPIRES 属性,这是可选的)。如果未指定,则 cookie 称为会话 cookie,并且在用户会话结束时(即浏览器关闭时)过期(被删除)

资源

换句话说,如果您没有在 cookie 上设置过期日期,它应该在浏览器关闭时“过期”。

我从未使用过 Clearance,但自述文件在 /config/initializers/clearance.rb 中显示了此配置选项:

Clearance.configure do |config|
  config.allow_sign_up = true
  config.cookie_domain = ".example.com"
  config.cookie_expiration = lambda { |cookies| 1.year.from_now.utc }
  config.cookie_name = "remember_token"
  config.cookie_path = "/"
  config.routes = true
  config.httponly = false
  config.mailer_sender = "reply@example.com"
  config.password_strategy = Clearance::PasswordStrategies::BCrypt
  config.redirect_url = "/"
  config.rotate_csrf_on_sign_in = false
  config.secure_cookie = false
  config.sign_in_guards = []
  config.user_model = User
end

如果我是你,我会尝试将 cookie_expiration 设置为 nil。但是,如果它需要过期,您可能需要分叉 gem 并查看此处的私有 API 是否可以根据您的需要进行更改。

如果你不想这样做,你可以在 Clearance 中创建一个守卫。当用户登录时,设置您自己的 cookie,没有过期日期。当用户关闭浏览器时,应该会删除您的自定义 cookie。然后,当您再次进行身份验证时,您应该能够检查您的自定义 cookie 并(在未找到时)拒绝身份验证并重定向到 sign_in。

于 2019-03-20T18:34:03.613 回答