Ruby on rails Rails筛选参数筛选过多
在筛选参数初始值设定项中,我筛选出所有与密码相关的重要参数:Ruby on rails Rails筛选参数筛选过多,ruby-on-rails,ruby,Ruby On Rails,Ruby,在筛选参数初始值设定项中,我筛选出所有与密码相关的重要参数: # config/initializers/filter_parameter_logging.rb Rails.application.config.filter_parameters += [:password, :password_confirmation] 但筛选出的参数比我预期的要多。它看起来像是从日志中筛选出的名称中包含“password”的任何内容 {"password_invite_form"=>"[FILTE
# config/initializers/filter_parameter_logging.rb
Rails.application.config.filter_parameters += [:password, :password_confirmation]
但筛选出的参数比我预期的要多。它看起来像是从日志中筛选出的名称中包含“password”的任何内容
{"password_invite_form"=>"[FILTERED]"}
有没有办法阻止过滤参数的模式匹配并匹配我设置的精确参数?有。您必须对rails中过滤掉包含“password”的参数的部分进行修补
如果它是我的项目,我会让rails继续做它的事情,并为该参数选择一个不同的名称。如果您需要有关如何进行此操作的帮助,只需注释即可。如果您希望显式控制模式匹配,可以使用正则表达式,而不是字符串或符号
# config/initializers/filter_parameter_logging.rb
Rails.application.config.filter_parameters += [/^password$/, /^password_confirmation$/]
这将告诉Rails准确地过滤“password”和“password\u confirmation”,但不过滤包含“password”作为子字符串的其他参数。我真的很惊讶文档没有强调这一点。顺便提一下,但没有提到这同样适用于日志过滤。在我维护的一个应用程序中,用于隐藏
dln
和tin
字段的过滤器影响了dln\u状态
和报告
字段。值得注意的是,未来的访问者可以使用正则表达式进行“深度过滤”,至少在Rails 5中是这样,但点分隔符确实需要转义。e、 g.在我的例子中,过滤器/attachments\.content$/
与嵌套附件的content\u type
属性以及任何其他模型的content
属性都不匹配。