gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:30:31 25 4
gpt4 key购买 nike

我想过滤某些用户信息,以便日志中不会捕获敏感信息。但是,在一种情况下,我想记录格式而不是默认格式 "[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 catch
Rails.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]")
end
end

请注意,默认过滤器与正则表达式匹配; :password被视为 /password/ .您可以对自定义过滤器执行同样的操作:
if [/foo/, /bar/].detect {|r| r.match(param_name) }
# ...
end

关于ruby-on-rails - 我可以自定义 Rails 过滤参数的方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28414886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com