Torquebox で JRuby を使用して Rails 4 アプリを作成していますが、セッションで奇妙な問題が発生しています。Railsのセキュリティガイドラインに従って、ユーザーが正常にログインしたときにセッションをリセットしようとしていることを除いて、うまく機能する認証を処理するためにdevise gemを使用しています。
これを処理する 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
このメソッドは間違いなく呼び出されていますが、2 つの出力はどちらも同じであり、セッションはまったくリセットされていません。私はTorqueBoxセッションストアを使用しており、次のようにセットアップしています
# session_store.rb
RtsBackend::Application.config.session_store :torquebox_store, {
key: '_RtsBackend_session'
}
# config.ru
use TorqueBox::Session::ServletStore
TorqueBoxがデータを挿入し、デバイスからのセッションデータが機能しているように見えますが、クリアできないようです。
ログイン時にdeviseがこれを自動的に行ったという印象を受けましたが、そうであれば同じ問題が発生しており、レールはそれをクリアしていません。
助言がありますか?