我正在显示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在用户有时退出活动后自动注销了会话。
我不知道这段代码是怎么回事。
请问有人知道这是什么吗?
谢谢
答案 0 :(得分:0)
您确定没有任何disconnect
方法或关闭通道时是否正在清洁:current_user?我认为问题在于渠道已关闭,正在清理current_user