我需要通过ruby脚本从办公室计算机发布到远程服务器。我已经把
了skip_before_filter :verify_authenticity_token
在控制器中我每次尝试都会得到“你想要的改变被拒绝”当我看到日志时我得到了
ActionController::InvalidAuthenticityToken
我误解了什么吗? 这是ruby脚本中的代码
url="display_ad[title]=#{row[1]}"
date_arr = row[2].split('/')
start_date = date_arr[2].to_s + "-" + date_arr[0].to_s + "-" + date_arr[1].to_s
url+="&display_ad[start_date]=#{start_date}"
date_arr = row[3].split('/')
end_date = Date.new( date_arr[2].to_i, date_arr[0].to_i, date_arr[1].to_i )
end_date = end_date + 7
end_date = end_date.strftime("%Y-%m-%d")
url+="&display_ad[end_date]=#{end_date}"
url+="&display_ad[slug]=#{row[7]}"
url+="&display_ad[category]=othr"
url = url.gsub("\n","")
url = url.gsub("\r","")
p url
easy = Curl::Easy.http_post("http://example.com/advertising/web/web_service_add", url)
并在控制器动作中
ad = DisplayAds.new(params[:display_ad])
ad.save
答案 0 :(得分:1)
在与Rails 2.3.8项目存在相同问题后,我登陆此页面。我成功地在几个控制器中使用skip_before_filter :verify_authenticity_token
,但这是我第一次尝试在应用程序控制器中定义的操作的ApplicationController
类顶部使用它。
我将操作移动到另一个控制器,以及skip_before_filter行,并且按预期正确禁用了验证。我认为可能的问题是,当在应用程序控制器中直接使用该类中定义的操作时,这可能无法正常工作。我没有调查过这可能是什么原因,因为在我这方面懒得编码我已经在那里定义了特定的动作,所以无论如何移动它是一个更好的选择。遇到此问题的其他人应尝试将受影响的操作移出ApplicationController
类。
有趣的是,在一个Rails 3.2.1项目中,我在skip_before_filter :verify_authenticity_token
中使用ApplicationController
并在类中定义了一个动作,它运行正常。
答案 1 :(得分:1)
请检查您的代码是否这一行:
protect_from_forgery
它将启动csrf保护。 请记住,在此方法之后放置所有sckip_before_filter。
Gook Luck!