【发布时间】:2016-05-24 21:26:57
【问题描述】:
我正在开发一个 Rails 应用程序(版本 4.2.5),它使用 rack-offline gem 来缓存用户在没有互联网连接时可以填写的表单(条目存储为可以提交的 localStorage 对象稍后当用户有连接时)。但是,当提交表单时,我收到了错误
ActionController::InvalidAuthenticityToken in EntriesController#create
当我在 Rails 服务器关闭时打开一个新的浏览器窗口并导航到 http://localhost:3000/entries/new(页面已被缓存 - 它呈现得很好),填写表单,然后重新打开服务器并尝试提交。
来自我的条目控制器:
def create
@entry = Entry.create(entry_params)
redirect_to "http://localhost:3000/entries"
end
以及应用程序控制器:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
end
在我的布局视图中包括<%= csrf_meta_tags %>
有什么方法可以在不影响应用安全性的情况下解决此问题?
编辑 在应用程序控制器中,我替换了
protect_from_forgery with: :exception
与
protect_from_forgery with: :null_session
这解决了问题。但是,我对这一切意味着什么了解不够,无法理解这是否会造成安全漏洞。可以? (PS - 我真的很想避免安全漏洞)
【问题讨论】:
标签: ruby-on-rails