繁体   English   中英

Rails 4根据生产中的每个请求重置会话

[英]rails 4 resets session on every request in production

我正在使用Rails 4.2.0和ruby 2.2.0实现Web应用程序,并且遇到了在完成新会话时设置任何时间请求的问题。 在那种情况下,我已经无法保存任何内容到会话中了。 这也导致无法检查真实性令牌的情况。

出于测试目的,在ApplicationController禁用了伪造保护,因此这不是重置会话的原因。

class ApplicationController < ActionController::Base
  #protect_from_forgery with: :null_session
  skip_before_action :verify_authenticity_token `
end 

我正在使用活动记录存储来保存会话,但是Cookie存储也会发生同样的情况:

MyApp::Application.config.session_store :active_record_store, :key => '_myapp_session', domain: :all, tld_length: 2

每次请求完成时,都会使用新的sessions_id插入sessions表的新条目,并且浏览器中的会话cookie指向新会话。

有什么想法可以重置会话吗?

这仅在生产环境中发生。 在开发中,一切都很好。

您的问题是由于调用skip_before_action :verify_authenticity_token ; 如果未验证真实性令牌,Rails将重置会话。 您还希望重新启用protect_from_forgery

我还看到没有真实性令牌的AJAX请求导致会话重置,在这里再次详细说明: http : //www.kalzumeus.com/2011/11/17/i-saw-an-extremely-subtle-bug今天我已经告诉了某人/

参考: https : //stackoverflow.com/a/11943243/449342

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM