Rails错误:ActionController :: InvalidAuthenticityToken

时间:2015-08-28 22:56:46

标签: ruby-on-rails authentication

我收到此错误:我的网络应用上的每个帖子请求都有ActionController::InvalidAuthenticityToken

我的临时解决方案是将此添加到控制器:skip_before_action :verify_authenticity_token但当然会创建漏洞......

有没有人知道我为什么会收到此错误,所以我可以修复它而不会产生漏洞?

谢谢。

1 个答案:

答案 0 :(得分:4)

您需要通过HTTP调用向控制器发送身份验证令牌。通常,如果您使用form_for帮助程序,则不需要明确发送真实性令牌。但是,如果您使用HTML表单<form>或Ajax请求,那么您必须在调用时发送此令牌。

Ajax

$.ajax({  
.....,  
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},  
....... });

表单将此内容放在html表单标记

<%= tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token) %>