mirror of
https://github.com/github/rails.git
synced 2026-01-11 15:48:09 -05:00
Do not include the authenticity token in forms where remote: true as ajax forms use the meta-tag value
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
## Rails 3.2.3 (unreleased) ##
|
||||
|
||||
* Do not include the authenticity token in forms where remote: true as ajax forms use the meta-tag value *DHH*
|
||||
|
||||
* Turn off verbose mode of rack-cache, we still have X-Rack-Cache to
|
||||
check that info. Closes #5245. *Santiago Pastorino*
|
||||
|
||||
|
||||
@@ -609,8 +609,15 @@ module ActionView
|
||||
# responsibility of the caller to escape all the values.
|
||||
html_options["action"] = url_for(url_for_options)
|
||||
html_options["accept-charset"] = "UTF-8"
|
||||
html_options["data-remote"] = true if html_options.delete("remote")
|
||||
html_options["authenticity_token"] = html_options.delete("authenticity_token") if html_options.has_key?("authenticity_token")
|
||||
|
||||
if html_options.delete("remote")
|
||||
html_options["data-remote"] = true
|
||||
|
||||
# The authenticity token is taken from the meta tag in this case
|
||||
html_options["authenticity_token"] = false
|
||||
else
|
||||
html_options["authenticity_token"] = html_options.delete("authenticity_token") if html_options.has_key?("authenticity_token")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -37,6 +37,10 @@ module RequestForgeryProtectionActions
|
||||
render :inline => "<%= form_for(:some_resource, :authenticity_token => false ) {} %>"
|
||||
end
|
||||
|
||||
def form_for_remote
|
||||
render :inline => "<%= form_for(:some_resource, :remote => true ) {} %>"
|
||||
end
|
||||
|
||||
def rescue_action(e) raise e end
|
||||
end
|
||||
|
||||
@@ -103,6 +107,13 @@ module RequestForgeryProtectionTests
|
||||
assert_select 'form>div>input[name=?][value=?]', 'custom_authenticity_token', @token
|
||||
end
|
||||
|
||||
def test_should_render_form_without_token_tag_if_remote
|
||||
assert_not_blocked do
|
||||
get :form_for_remote
|
||||
end
|
||||
assert_no_match /authenticity_token/, response.body
|
||||
end
|
||||
|
||||
def test_should_allow_get
|
||||
assert_not_blocked { get :index }
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user