ruby-on-rails – 我可以自定义Rails过滤参数的方式吗?

ruby-on-rails – 我可以自定义Rails过滤参数的方式吗?,第1张

概述我想过滤某些用户信息,以便不在日志中捕获敏感信息.但是,在一种情况下,我想记录格式而不是默认的“[FILTERED]”. 例如,我想进行这种转换: # user input value to log"e6132 DG71" => "a9999 AA99" 这有助于我们解决用户问题. 我可以为Rails的filter_parameters方法使用自定义过滤器(可能是proc?)吗? 附加一个 我想过滤某些用户信息,以便不在日志中捕获敏感信息.但是,在一种情况下,我想记录格式而不是默认的“[FILTERED]”.

例如,我想进行这种转换:

# user input    value to log"e6132 DG71" => "a9999 AA99"

这有助于我们解决用户问题.

我可以为Rails的filter_parameters方法使用自定义过滤器(可能是proc?)吗?

解决方法 附加一个lambda过滤器

您可以将lambda过滤器附加到Rails.application.config.filter_parameters.只有未通过典型过滤捕获的参数才会继续进行自定义过滤.

# Typical filters - will show as [FILTERED]Rails.application.config.filter_parameters += [  :password]# Custom filter - this only sees what the prevIoUs List dIDn't catchRails.application.config.filter_parameters << lambda do |param_name,value|  if %w[foo_param bar_param].include?(param_name) && value.respond_to?(:gsub!)    # Alter the string in place because we don't have access to     # the hash to update the key's value    value.gsub!(/[a-z]/,"a")    value.gsub!(/[A-Z]/,"A")    value.gsub!(/[0-9]/,"9")    # Stick this at the beginning to make it easy to see in logs    value.gsub!(/\A/,"[FORMAT FILTERED]")  endend

请注意,默认筛选器匹配为正则表达式; :密码被视为/ password /.你也可以为自定义过滤器做同样的事情:

if [/foo/,/bar/].detect {|r| r.match(param_name) }  # ...end
总结

以上是内存溢出为你收集整理的ruby-on-rails – 我可以自定义Rails过滤参数的方式吗?全部内容,希望文章能够帮你解决ruby-on-rails – 我可以自定义Rails过滤参数的方式吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1287163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存