【发布时间】:2012-12-11 16:41:25
【问题描述】:
我正在执行一些 AJAX 请求以添加或删除一些对象。像这样的:
javascript
jQuery.getJSON("/apps/remove_screenshot/' + screenshot_id, function(result) {
if (result.status == 'ok') {
screenshot_container.remove()
}
});
控制器
class AppsController < ApplicationController
load_and_authorize_resource
check_authorization
# ...
def remove_screenshot
# ...
end
end
config/initializers/devise.rb
config.http_authenticatable = true
# config.http_authenticatable_on_xhr = true
config.navigational_formats = [:html, :json]
问题是,请求已成功执行。但是当我重新加载执行请求的页面时,我得到了访问被拒绝错误。
不过,我在执行remove_screenshot 操作时需要检查身份验证。
我该如何解决这个问题?
谢谢!
【问题讨论】:
-
不。一切都已经完成;另外,会话不会立即过期 - 控制器验证通过。
-
@KateGregory 哦,那条评论的讽刺...... :) 你还确定你的 CSRF 安全令牌包含在你的布局文件的 head 标签中吗?
-
你可以查看服务器日志,看看你做AJAX请求时是否发送了csrf令牌?
标签: ruby-on-rails ajax ruby-on-rails-3 devise