Я строю рельсы 4 приложения с JRuby на Torquebox и сталкиваюсь с странной проблемой с сеансами. Я использую камень разработки для проверки подлинности, который работает хорошо, за исключением того, что в соответствии с рекомендациями по безопасности rails, я пытаюсь сбросить сеанс, когда пользователь успешно входит в систему.reset_session ничего не делает
Я создал крючок 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 вставил данные, и данные сеанса из завещанию работает, но я просто не могу показаться, чтобы очистить его.
У меня создалось впечатление, что разработка была сделана автоматически при входе в систему, но если это то же самое происходит, и рельсы не очищают его.
Любые предложения?