2013-11-20 108 views
0

我在Torquebox上构建了JRuby的rails 4应用程序,并且遇到了与会话有关的奇怪问题。我正在使用设计宝石来处理认证,除此之外,根据导轨安全指南,我试图在用户成功登录时重置会话。reset_session没有做任何事情

我创建了一个监狱挂钩处理这对我来说,它看起来像这样

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还没有清除它。

有什么建议吗?

回答

0

因此,经过深入挖掘并与TorqueBox核心开发人员交谈后发现,这是一个错误。在第4栏中,他们改变了会话重置的方式,而不涉及清除其内容。

感谢@bbrowningthis commit它现在应该排序,等待最后的测试一旦修复被按下:)