当检测到使用设备的会话超时时执行一些代码?

时间:2017-01-09 09:55:24

标签: ruby-on-rails devise

我正在使用Devise进行身份验证。当我们按如下所示启用超时模块时,会启用会话超时功能。

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  devise :database_authenticatable, :registerable, :timeoutable
end

我正在编写一个简单的多人房间逻辑,所以我有一个房间列表,显示房间列表以及当前居住在每个房间的用户。我的目标是,一旦某个用户的会话由于不活动而过期,就应该检测到该事件,并且应该执行从该房间清除用户的代码。总之,我想知道是否有可能检测到会话超时并在发生这种情况时执行代码?

我感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

我想你最好的选择是看看这个问题:

Detect when a devise session expires

它们覆盖timeoutable方法并实现自己的代码:

module Devise
  module Models
    module Timeoutable
      def timedout?(last_access)
        #  your custom code goes into this method
        return false if remember_exists_and_not_expired?
        !timeout_in.nil? && last_access && last_access <= timeout_in.ago
      end
    end
  end
end