首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionController::InvalidAuthenticityToken

ActionController::InvalidAuthenticityToken
EN

Stack Overflow用户
提问于 2010-07-29 23:57:45
回答 25查看 254.3K关注 0票数 174

下面是一个错误,由我的Rails应用程序中的一个表单引起:

代码语言:javascript
复制
Processing UsersController#update (for **ip** at 2010-07-29 10:52:27) [PUT]
  Parameters: {"commit"=>"Update", "action"=>"update", "_method"=>"put", "authenticity_token"=>"ysiDvO5s7qhJQrnlSR2+f8jF1gxdB7T9I2ydxpRlSSk=", **more parameters**}

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

对于每个非get请求都会发生这种情况,如您所见,authenticity_token就在那里。

EN

回答 25

Stack Overflow用户

回答已采纳

发布于 2011-06-26 08:47:06

通过将评级从2.3.8降至2.3.5解决了问题。(还有臭名昭著的“你被重新定向了”。问题)

票数 -18
EN

Stack Overflow用户

发布于 2010-08-29 18:44:33

我也有同样的问题,但页面缓存的页面。页面使用陈旧的身份验证令牌进行缓冲,并使用post/put/delete方法进行所有操作,其中识别为伪造尝试。错误(422无法处理的实体)返回给用户。

Rails 3的解决方案:

添加:

代码语言:javascript
复制
 skip_before_filter :verify_authenticity_token  

或者正如"sagivo“在Rails 4中指出的那样:

代码语言:javascript
复制
 skip_before_action :verify_authenticity_token

在进行缓存的页面上。

正如@toobulkeh评论的那样,这不是:index:show操作上的漏洞,但要注意在:put:post操作上使用它。

例如:

代码语言:javascript
复制
 caches_page :index, :show  
 skip_before_filter :verify_authenticity_token, :only => [:index, :show]

参考:http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html

由barlop- Rails4.2添加的支持skip_before_action https://guides.rubyonrails.org/4_2_release_notes.html的已弃用skip_before_filter添加的注释“*_filter系列方法已从文档中删除。为了支持*_action系列方法,不鼓励使用它们。”

对于Rails 6 (正如"collimarco“所指出的),您可以使用skip_forgery_protection,并且将其用于不使用会话数据的REST API是安全的。

票数 226
EN

Stack Overflow用户

发布于 2013-11-07 02:13:14

对我来说,在Rails4下这个问题的原因是一个缺失,

代码语言:javascript
复制
<%= csrf_meta_tags %>

我的主应用程序布局中的行。当我重写我的布局时,我不小心把它删除了。

如果它不在主布局中,那么在任何需要CSRF令牌的页面中都需要它。

票数 85
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3364492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档