0

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がこれを自動的に行ったという印象を受けましたが、そうであれば同じ問題が発生しており、レールはそれをクリアしていません。

助言がありますか?

4

1 に答える 1

0

そのため、掘り下げて、コア TorqueBox 開発者の 1 人と話をした後、それはバグであることが判明しました。Rails 4 では、内容のクリアを伴わないセッションのリセット方法が変更されました。

このコミットのおかげ@bbrowningで、修正がプッシュされると、最終テストが保留されてソートされるはずです:)

于 2013-11-20T19:31:44.090 に答える