未验证 提交 ee3ebc90 编写于 作者: K Kasper Timm Hansen 提交者: GitHub

Merge pull request #34894 from hahmed/tames-params-wrapper-errors

Capture parsing errors only for ActionController::ParamsWrapper#process_actions
......@@ -241,22 +241,8 @@ def inherited(klass)
# Performs parameters wrapping upon the request. Called automatically
# by the metal call stack.
def process_action(*args)
if _wrapper_enabled?
wrapped_hash = _wrap_parameters request.request_parameters
wrapped_keys = request.request_parameters.keys
wrapped_filtered_hash = _wrap_parameters request.filtered_parameters.slice(*wrapped_keys)
# This will make the wrapped hash accessible from controller and view.
request.parameters.merge! wrapped_hash
request.request_parameters.merge! wrapped_hash
# This will display the wrapped hash in the log file.
request.filtered_parameters.merge! wrapped_filtered_hash
end
ensure
# NOTE: Rescues all exceptions so they
# may be caught in ActionController::Rescue.
return super
_perform_parameter_wrapping if _wrapper_enabled?
super
end
private
......@@ -292,5 +278,20 @@ def _wrapper_enabled?
ref = request.content_mime_type.ref
_wrapper_formats.include?(ref) && _wrapper_key && !request.parameters.key?(_wrapper_key)
end
def _perform_parameter_wrapping
wrapped_hash = _wrap_parameters request.request_parameters
wrapped_keys = request.request_parameters.keys
wrapped_filtered_hash = _wrap_parameters request.filtered_parameters.slice(*wrapped_keys)
# This will make the wrapped hash accessible from controller and view.
request.parameters.merge! wrapped_hash
request.request_parameters.merge! wrapped_hash
# This will display the wrapped hash in the log file.
request.filtered_parameters.merge! wrapped_filtered_hash
rescue ActionDispatch::Http::Parameters::ParseError
# swallow parse error exception
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册