Rails 3在config/application.rb
中有一个很好的功能,允许用户过滤日志中出现的敏感信息(如密码),如下所示:
config.filter_parameters += [:password, :creditcardnum]
但是,我的问题在于如何从其他地方登录过滤相同的信息。例如,我正在使用DelayedJob,即使我的密码是从我的开发日志中过滤掉的,它仍会在DelayedJob记录时出现(我想象类似工作的宝石会发生类似的情况):
SQL (14.3ms) INSERT INTO "delayed_jobs" ("attempts", "created_at", "failed_at", "handler", "last_error", "locked_at", "locked_by", "priority", "queue", "run_at", "updated_at") VALUES (blah blah blah...) username: MYUSERNAME@EMAIL.COM\n password: MYPASSWORDHERE\n method_name: :destroy\nargs: []\n"], ["last_error", nil], ["locked_at", nil], ["locked_by", nil], ["priority", 0], ["queue", nil], ["run_at", Wed, 03 Jul 2013 03:07:02 UTC +00:00], ["updated_at", Wed, 03 Jul 2013 03:07:02 UTC +00:00]]
你对此有什么想法吗?
答案 0 :(得分:1)
我建议只将非敏感信息发送给延迟工作。
例如,以下代码将完整的user
对象(包括密码或任何其他敏感信息)发送到延迟作业:
user.delay.activate
为了防止这种情况,首先我们可以准备ActivateUserJob
:
class ActivateUserJob < Struct.new(:user_id)
def perform
user = User.find(user_id)
user.activate
end
end
然后,在需要时将作业排入队列。这样,只显示user
的ID:
Delayed::Job.enqueue ActivateUserJob.new(user.id)