ActionCable-如何从日志中过滤掉任何敏感数据

问题描述 投票:0回答:1

我想从动作电缆日志中过滤sensitive / large数据。像这样:

AppOnlineChannel#receive({"audio_ch"=>"{filtered}"})

我没有为此任务找到任何可操作的电缆配置。有人有什么想法,我该怎么办?

预先感谢。

ruby-on-rails ruby-on-rails-5 actioncable
1个回答
0
投票

这是我从dispatch_action方法中过滤特定字段的方式。

方法1:适用于所有频道

  • 我创建了一个config/initializers/actioncable.rb,然后
  • 覆盖dispatch_action方法

注意:添加此代码后重新启动服务器

# config/initializers/actioncable.rb

ActionCable::Channel::Base.class_eval do
  def dispatch_action(action, data)
    # logger.info action_signature(action, data)

    # .......... filter data start ..........
    filtered_data = data
    filtered_data['audio_ch'] = '{filtered}' if filtered_data['audio_ch'].present?
    logger.info action_signature(action, filtered_data)
    # .......... ./filter data end ..........

    if method(action).arity == 1
      public_send action, data
    else
      public_send action
    end
  rescue Exception => exception
    rescue_with_handler(exception) || raise
  end
end

方法2:用于特定频道

此猴子补丁在特定的频道中起作用。

# app/channels/app_online_channel.rb

class AppOnlineChannel < ApplicationCable::Channel
  def dispatch_action(action, data)
     # logger.info action_signature(action, data)

     # .......... filter data start ..........
     filtered_data = data
     filtered_data['audio_ch'] = '{filtered}' if filtered_data['audio_ch'].present?
     logger.info action_signature(action, filtered_data)
     # .......... ./filter data end ..........

     if method(action).arity == 1
       public_send action, data
     else
       public_send action
     end
   rescue Exception => exception
     rescue_with_handler(exception) || raise
   end
© www.soinside.com 2019 - 2024. All rights reserved.