gpt4 book ai didi

ruby-on-rails - 在Rails ApplicationController session 中使用result_from进行AJAX调用似乎丢失了

转载 作者:行者123 更新时间:2023-12-03 09:00:22 25 4
gpt4 key购买 nike

在Rails中,我在ApplicationController中添加了几个rescue_from处理程序。他们的工作正常,除了看起来像 session 丢失,因为下一个请求始终被重定向到登录页面。

ApplicationController:

  rescue_from ActiveRecord::RecordNotFound, :with => :handle_record_not_found
rescue_from ActiveRecord::RecordInvalid, :with => :handle_record_invalid
rescue_from ApplicationSecurityError, :with => :handle_security_error
rescue_from ApplicationError, :with => :handle_application_error

处理程序之一:
def handle_application_error(error)
logger.warn "#{error.class} #{error.user_safe_message} #{error.debug_info}, user #{@current_user.id}"
render :json => {:errors => {:base => error.user_safe_message}, :status => :ok}
end

有没有办法使用这些处理程序而不会丢失 session ?
我检查了Firebug,它肯定是服务器端的,因为jQuery从错误的请求中获得了不同的cookie,该错误的请求比以前的请求短,所以我认为我确实丢失了 session 。

最佳答案

好吧,所以我又尝试了一次SO搜索并发现
Rails 3 user session gets destroyed while calling create from backbone collection

指向protect_from_forgery,这使我进入了My jquery AJAX POST requests works without sending an Authenticity Token (Rails)

为了解决这个问题,我刚刚在所有AJAX请求中添加了伪造保护参数。

var _auth_token_name = '<%= request_forgery_protection_token %>';
var _auth_token = '<%= form_authenticity_token %>';

请求正文的构造(我将其称为 $.ajax)从此开始:
var data = {};
data[_auth_token_name] = _auth_token;

关于ruby-on-rails - 在Rails ApplicationController session 中使用result_from进行AJAX调用似乎丢失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com