2013-11-20 1 views
0

Я строю рельсы 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 вставил данные, и данные сеанса из завещанию работает, но я просто не могу показаться, чтобы очистить его.

У меня создалось впечатление, что разработка была сделана автоматически при входе в систему, но если это то же самое происходит, и рельсы не очищают его.

Любые предложения?

ответ

0

Итак, после того, как выкапывали и говорили с одним из основных разработчиков TorqueBox, это оказалось ошибкой. В рельсах 4 они изменили способ перезагрузки сеансов, который не включал очистку его содержимого.

Благодаря @bbrowning с this commit теперь оно должно быть отсортированные до окончательного испытания после того, как исправление выталкивается :)