Rails内置了日志过滤功能,因此您无需记录密码和信用卡.效果很好但是当你想要触发自定义日志(比如发送电子邮件)并发送自己的参数或其他数据时,参数显然不会自动过滤.我一直在挖掘并尝试在rails源中找到它,但到目前为止还没有运气.
我已经配置了rails来过滤参数,如下所示,它可以正常工作以保持数据不受rails日志的影响:
config.filter_parameters += [:password, :password_confirmation, :credit_card]
Run Code Online (Sandbox Code Playgroud)
如何将params哈希值中的敏感数据转储到电子邮件,api调用或自定义(非rails)日志之前?
我有一些代码将return_toURL 嵌入到我想要测试的重定向(如OpenID)中:
def test_uses_referrer_for_return_to
expected_return_to = 'http://test.com/foo'
@request.env['HTTP_REFERER'] = expected_return_to
get :fazbot
# @response.redirected_to looks like http://service.com?...&return_to=[URI-encoded version of URL above]&...
encoded_return_to = (something_here)[:return_to]
assert_equal expected_return_to, URI.unencode(encoded_return_to)
end
Run Code Online (Sandbox Code Playgroud)
这是一个Rails ActionController::TestCase,所以我可以访问各种帮助方法; 我找不到合适的人.
当然我可以URI.parse用来获取URL的params部分,然后将其/&|?/拆分然后重新拆分'=',但我希望这已经为我完成了.另外,如果我错过了网址转义或参数解析中的一些模糊规则,该怎么办?有有有什么东西在ActionPack或ActiveSupport要做到这一点,但我不能找到它.
谢谢 :)