2013-11-20 3 views
0

JRuby에서 JRuby와 함께 레일 4 앱을 만들고 세션에 이상한 문제가 발생했습니다. 레일 보안 지침에 따라 사용자가 성공적으로 로그인 할 때 세션을 재설정하려고한다는 것을 제외하고 잘 작동하는 인증을 처리하기 위해 devise gem을 사용하고 있습니다.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 

처럼 보이는 세션이 전혀 재설정되지 않는 한, 저를 위해이 문제를 처리합니다. 나는

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

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

처럼 TorqueBox 세션 저장소 설정을 사용하고 그리고 그것은 TorqueBox 데이터를 삽입 것처럼 작동하는 것, 그리고 유증에서 세션 데이터가 작동하지만, 난 그냥 그것을 취소 할 수없는 것.

나는 로그인 할 때이 작업을 자동으로 수행한다는 인상을 받았다. 그렇다면 동일한 문제가 발생하고 레일스가이를 지우지 않는 것입니다.

제안 사항?

답변

0

TorqueBox 핵심 개발자 중 한 명과 대화를 나누고 나서 버그가있는 것으로 밝혀졌습니다. 레일 4에서, 그들은 내용을 삭제하는 것을 포함하지 않는 세션이 리셋되는 방식을 변경했다. 수정이 밀려 일단 지금은 최종 테스트를 출원 분류해야 this commit@bbrowning

감사합니다 :)