用户关闭浏览器时如何自动退出?清除 gem 中是否有任何配置更改可以实现这一点。
问问题
178 次
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 回答