Рельсы не будут следовать за графиком Devise - PullRequest
0 голосов
/ 01 ноября 2018

Я показываю соответствующие коды Devise timeoutable

User.rb

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

и /config/initializers/devise.rb

config.timeout_in = 1.day

Это сработало отлично, недавно я внедрил Rails Action Cable для некоторых фоновых заданий, например /app/channels/application_cable/connection.rb

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 голосов
/ 01 ноября 2018

Вы уверены, что у вас нет метода disconnect или что-то очищает: current_user, когда канал закрыт? Я думаю, что проблема в том, что канал закрыт, и что чистка current_user

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...