Ruby on Rails形成页面缓存,包括authenticity_token

jac*_*cob 18 forms caching ruby-on-rails authenticity-token

我有一个简单的Ruby on Rails表单,其中包含authenticity_token.不幸的是,我错过了当您页面缓存此页面时,真实性令牌变为无效.我很高兴我弄清楚了.

在这种情况下你如何解决缓存?

Mik*_*cic 23

正如Matchu发布的那样,你可以在这篇文章中实现第二点(他发布了相同的链接,但也通过我的谷歌搜索找到了).这增加了对JavaScript的依赖,这可能是您想要的,也可能不是.

或者,您可以查看片段缓存.这允许您缓存页面的某些部分,但仍然生成动态部分(例如具有真实性令牌的表单).使用此技术,您可以缓存页面的其余部分,但为每个请求生成一个新表单.

最后一个解决方案(但是最不利的)是禁用该特定操作的真实性标记.您可以通过将以下内容添加到生成该表单的控制器的开头来执行此操作:

protect_from_forgery :except => [:your_action]
Run Code Online (Sandbox Code Playgroud)

您还可以通过在开头添加以下内容来关闭整个控制器的protect_from_forgery:

skip_before_filter :verify_authenticity_token
Run Code Online (Sandbox Code Playgroud)