[英]Rails: Devise Session Expiry with SessionsController < Devise::SessionsController
Ruby on Rails Security Guide on Security,在2.9 Session Expiry
下给出以下示例代码:
class Session < ApplicationRecord
def self.sweep(time = 1.hour)
if time.is_a?(String)
time = time.split.inject { |count, unit| count.to_i.send(unit) }
end
delete_all "updated_at < '#{time.ago.to_s(:db)}'"
end
end
如何将 model 连接到 Devise / 到 Devise SessionController? Devise 会使用 model 吗? 它会自动完成还是需要进一步的步骤? 这个例子不是特定于 Rails 自己的 cookie/会话管理吗? 如果是这样,Devise / Warden 的适当补充是什么?
谢谢
冯·斯波茨
如果您正在构建自己的身份验证系统,这些说明非常有用,但 Devise 可以为您处理。
在您的用户 model 中,将:timeoutable
属性添加到您现有的devise
语句中。
在config/initializers/devise.rb
中,您可以指定超时持续时间,例如:
config.timeout_in 30.minutes
如果一刀切的超时限制不能满足您的需求,您还有其他几种选择:
如果您有不同的模型,它们有自己的登录路径和不同的超时限制,您可以在每个devise_for
声明中添加timeout_in
如果您的用户 model 中有一个标志(例如,某些用户有admin: true
),您可以将#timeout_in
方法添加到您的 model (请参阅Z3EC01EA92CAD072B9D6A0F32FB9B58 中的此条目)。
但是,大多数时候,使用配置文件是 go 的最佳、最简单的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.