Rails 教程 7.4.4 - post 方法如何使用真实性令牌提交表单?
Rails Tutorial 7.4.4 - How does post method submit form with authenticity token?
我在 Rails Tutorial 7.4.4,我很好奇以下测试 post 中的 post_via_redirect
方法如何与 authenticity_token
参数一起形成。
以下测试将通过:
class UsersSignupTest < ActionDispatch::IntegrationTest
test "valid signup information will add user to database" do
assert_difference 'User.count', 1 do
post_via_redirect users_path, user: { name: "Filius Flitwick",
email: "Filius_Flitwick@Hogworts.ORG",
password: "charmsmaster",
password_confirmation: "charmsmaster" }
end
end
end
为了防止CSRF(Cross Site Request Forgery),我假设如果表单中没有正确的authenticity_token
参数,表单将无法通过验证。但是,我无法弄清楚 authenticity_token
是从哪里放入 parameters
.
事实上,我不确定 rails 中的 POST
到底在做什么。 POST
会先请求 URL 的网页来获取 authenticity_token
吗?
测试环境默认关闭CSRF保护。您可以通过在 config/environments/test.rb
中添加以下行来激活它:
config.action_controller.allow_forgery_protection = true
参见 Configuration Rails Application 上的指南。
我在 Rails Tutorial 7.4.4,我很好奇以下测试 post 中的 post_via_redirect
方法如何与 authenticity_token
参数一起形成。
以下测试将通过:
class UsersSignupTest < ActionDispatch::IntegrationTest
test "valid signup information will add user to database" do
assert_difference 'User.count', 1 do
post_via_redirect users_path, user: { name: "Filius Flitwick",
email: "Filius_Flitwick@Hogworts.ORG",
password: "charmsmaster",
password_confirmation: "charmsmaster" }
end
end
end
为了防止CSRF(Cross Site Request Forgery),我假设如果表单中没有正确的authenticity_token
参数,表单将无法通过验证。但是,我无法弄清楚 authenticity_token
是从哪里放入 parameters
.
事实上,我不确定 rails 中的 POST
到底在做什么。 POST
会先请求 URL 的网页来获取 authenticity_token
吗?
测试环境默认关闭CSRF保护。您可以通过在 config/environments/test.rb
中添加以下行来激活它:
config.action_controller.allow_forgery_protection = true
参见 Configuration Rails Application 上的指南。