0

我正在使用 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 已插入数据,并且来自设计的会话数据正在工作,但我似乎无法清除它。

我的印象是 devise 在登录时会自动执行此操作,但如果是这样,那么同样的问题正在发生并且 rails 没有清除它。

有什么建议么?

4

1 回答 1

0

因此,在四处挖掘并与 TorqueBox 的一位核心开发人员交谈后,结果证明这是一个错误。在 Rails 4 中,他们改变了会话的重置方式,不涉及清除其内容。

由于@bbrowning有了这个提交,一旦修复被推送,它现在应该被排序等待最终测试:)

于 2013-11-20T19:31:44.090 回答