Ruby on rails Rails-缓存表单的无效真实性令牌错误
我正在开发一个Rails应用程序(版本4.2.5),它使用rack offline gem缓存一个表单,用户可以在没有internet连接时填写该表单(条目存储为localStorage对象,可以在用户连接后提交)。然而,当表单提交时,我得到了错误Ruby on rails Rails-缓存表单的无效真实性令牌错误,ruby-on-rails,Ruby On Rails,我正在开发一个Rails应用程序(版本4.2.5),它使用rack offline gem缓存一个表单,用户可以在没有internet连接时填写该表单(条目存储为localStorage对象,可以在用户连接后提交)。然而,当表单提交时,我得到了错误 ActionController::EntriesController中的InvalidAuthenticationToken#创建 当我在Rails服务器关闭的情况下打开一个新的浏览器窗口并导航到(页面已被缓存-呈现良好),填写表单,然后重新打开服
ActionController::EntriesController中的InvalidAuthenticationToken#创建
当我在Rails服务器关闭的情况下打开一个新的浏览器窗口并导航到(页面已被缓存-呈现良好),填写表单,然后重新打开服务器并尝试提交时,就会发生这种情况
从我的控制器:
def create
@entry = Entry.create(entry_params)
redirect_to "http://localhost:3000/entries"
end
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
以及应用程序控制器:
def create
@entry = Entry.create(entry_params)
redirect_to "http://localhost:3000/entries"
end
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
与
这就解决了问题。然而,我对所有这些意味着什么了解不够,无法理解这是否会造成安全漏洞。是吗?(PS-我真的想避免安全漏洞)如果您有足够聪明的javascript使用csrf\u meta\u标记,那么csrf\u标记对于ajax表单提交非常有用。否则,您需要将带有令牌的常规表单字段放入表单中:
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
如果您以某种方式构建了一个表单,但没有包含真实性令牌,那么这可能会解决您的问题
以下是一些其他想法:
谢谢-我尝试过这个,但这给了我错误
ActionController::InvalidAuthenticityToken
。我还尝试了其他地方有人推荐的方法——结果相同。我可能忽略了什么?我补充了我所能想到的其他所有问题。谢谢你-我会处理这个问题,看看我能想出什么。啊-我想我理解这个问题。。。表单本身在页面的Javascript中提供(它是动态创建的),然后通过rack::offline缓存。然后我关闭服务器并重新启动它,这意味着我违反了上面的第二点。我会看看我是否能想出一个办法来解决这个问题——这让我觉得我可能需要稍微改变一下我的应用程序的结构。。。