Rails将不会遵循Devise超时

时间:2018-11-01 14:35:53

标签: ruby-on-rails ruby devise

我正在显示Devise超时的相关代码

User.rb

class User < ApplicationRecord
   devise :database_authenticatable, :recoverable, :rememberable, :validatable, :confirmable, :timeoutable
   .....
end

/config/initializers/devise.rb

config.timeout_in = 1.day

工作得很好,最近我为/app/channels/application_cable/connection.rb之类的一些后台作业实现了Rails Action Cable

module ApplicationCable
    class Connection < ActionCable::Connection::Base
        identified_by :current_user

        def connect 
            self.current_user = find_verified_user
            logger.add_tags "ActionCable", current_user.email
        end

        private

        def find_verified_user
            current_user = env['warden'].user
            if current_user
                current_user
            else
                reject_unauthorized_connection
            end
        end
    end
end

退订方法

def unsubscribed
    # Any cleanup needed when channel is unsubscribed
    $redis.del "user_#{ current_user.id }_online"
    ActionCable.server.broadcast 'online_indicator', userId: current_user.id, online: false
end

在实施后,此Rails在用户有时退出活动后自动注销了会话。

我不知道这段代码是怎么回事。

请问有人知道这是什么吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您确定没有任何disconnect方法或关闭通道时是否正在清洁:current_user?我认为问题在于渠道已关闭,正在清理current_user