为什么会出现:ActionController::InvalidAuthenticityToken


我们来分析下为什么会出现:ActionController::InvalidAuthenticityToken ?
1. ActionController是所有controller的父类,里面有很多内置的方法,同时也就有这个“检查 authenticity”的token是否可用。Rails提倡约定胜过配置,所以检查真实性成了默认的,不需要import进来。

2. 我们在使用POST, PUT,, PATCH ,DELETE的请求的时候,需要判断是否属于“跨站请求伪造”-CSRF(Cross Site Request Forgery), 也就是判断你发送给服务器的数据是否是合法的。

3.我们使用form_for或者相关的tag的时候,请求的时候会带上一个authenticity_token作为参数来一起传递,如果你提交的form里面没有这个参数,那么就就会得到一个 InvalidAuthenticityToken 错误!。

4.有时候,你可以跳过这个验证,在对应的controller里加一句这个
skip_before_action  :verify_authenticity_token

5. 也有可能是缓存问题 :rails dev:cache, 还有可能是webpacker的js编译错误导致。

但是跳过验证并不安全,需要分析原因, 如果是通过api接口提交数据,那可能需要自己手动加这个authenticity_token。




阅读量: 809
发布于:
修改于: