devise配置登录超时和单处登陆
1.配置用户超时<Project>/config/initializers/devise.rb
编辑 # config.timeout_in = 30.minutes 这一行,修改为想要配置的时间
<Project>/app/models/user.rb
配置devise :database_authenticatable, :registerable,这一行,加上 :timeoutable
2.设置用户单处登陆
原理:devise在用户登陆后会设置users表中的current_sign_in_at字段为最后一次登陆的时间,用户每次登陆后在session中保存current_sign_in_at字段,在application中校验session中current_sign_in_at字段,如果为空或者小于current_user对象的current_sign_in_at则强制注销
2.1 在application_controller基类中定义after_sign_in_path_for方法在当中设置session对象
1 | def after_sign_in_path_for(resource) |
2.2 定义has_signed取代:authenticate_user!判断用户登陆
1 | def has_signed |
2.3 在需要判断用户登陆的controller中添加before_action :has_signed过滤器。