提交 242c5c7a 编写于 作者: T Taishi Kasuga

fix fails to force_ssl_redirection if session_store is disabled

上级 8c8e9b34
......@@ -89,7 +89,7 @@ def force_ssl_redirect(host_or_options = nil)
end
secure_url = ActionDispatch::Http::URL.url_for(options.slice(*URL_OPTIONS))
flash.keep if respond_to?(:flash)
flash.keep if request.respond_to?(:flash)
redirect_to secure_url, options.slice(*REDIRECT_OPTIONS)
end
end
......
......@@ -659,7 +659,9 @@ def process(action, *args)
@request.assign_parameters(@routes, controller_class_name, action.to_s, parameters)
@request.session.update(session) if session
@request.flash.update(flash || {})
is_request_flash_enabled = @request.respond_to?(:flash)
@request.flash.update(flash || {}) if is_request_flash_enabled
if xhr
@request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'
......@@ -685,7 +687,8 @@ def process(action, *args)
@assigns = @controller.respond_to?(:view_assigns) ? @controller.view_assigns : {}
if flash_value = @request.flash.to_session_value
flash_value = is_request_flash_enabled ? @request.flash.to_session_value : nil
if flash_value
@request.session['flash'] = flash_value
else
@request.session.delete('flash')
......
......@@ -321,4 +321,29 @@ def test_banana_does_not_redirect_if_already_https
assert_response 200
assert_equal 'ihaz', response.body
end
def test_banana_redirects_to_https_if_not_https_and_flash_middleware_is_disabled
disable_flash
get :banana
assert_response 301
assert_equal 'https://test.host/redirect_to_ssl/banana', redirect_to_url
ensure
enable_flash
end
private
def disable_flash
ActionDispatch::TestRequest.class_eval do
alias_method :flash_origin, :flash
undef_method :flash
end
end
def enable_flash
ActionDispatch::TestRequest.class_eval do
alias_method :flash, :flash_origin
undef_method :flash_origin
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册