清仓宝石|在Rails 5中关闭浏览器后过期会话?

时间:2019-03-20 18:11:42

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

当用户关闭浏览器时,如何自动退出?清除gem中是否有任何配置更改可以启用此功能。

1 个答案:

答案 0 :(得分:0)

  

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

Source

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

我从未使用过Clearance,但是ReadMe在/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 here

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