reset_session没有做任何事情

时间:2013-11-20 11:39:01

标签: ruby-on-rails-4 torquebox

我在Torquebox上使用JRuby构建了一个rails 4应用程序,并遇到了一个奇怪的会话问题。我正在使用设计gem处理身份验证,但是根据rails安全指南,我正在尝试在用户成功登录时重置会话。

我创建了一个Warden钩子,它为我处理这个,看起来像这样

Warden::Manager.after_set_user :event => [:set_user, :authentication] do |record, warden, options|
  if options[:scope] && warden.authenticated?(options[:scope])
    request = warden.request
    Rails.logger.debug "session - #{request.session}"
#     backup = request.session.to_hash
#     backup.delete(:session_id)
    request.reset_session
#     request.session.update(backup)
    Rails.logger.debug "session - #{request.session}"
  end
end

这个方法肯定被调用,这很好,但是两个输出都是相同的,并且会话根本没有被重置。我正在使用TorqueBox会话存储,设置如

# session_store.rb
RtsBackend::Application.config.session_store :torquebox_store, {
  key: '_RtsBackend_session'
}

# config.ru
use TorqueBox::Session::ServletStore

它似乎正在工作,因为TorqueBox已插入数据,而来自设计的会话数据正在运行,但我似乎无法清除它。

我的印象是设计在登录时会自动执行此操作,但如果是,则会发生同样的问题,并且rails不会清除它。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

因此,经过深入研究,并与其中一个核心TorqueBox开发人员交谈,结果证明这是一个错误。在rails 4中,他们改变了重置会话的方式,但不涉及清除其内容。

感谢@bbrowningthis commit,现在应该在推送修复后对其进行排序,等待最终测试:)