1

現在、Rails アプリケーションを 2.1.0 から 2.3.14 にアップグレードしています。現在、ほとんどの機能は正常に動作していますが、ユーザー セッションに奇妙な問題があります。

ユーザーがログインすると、これはセッションに保存され、ブラウザーの再起動後も使用できます。

ただし: ローカル サーバーを再起動し、認証が必要なページを読み込むと、次のようになります。

  1. Rails は、以前とまったく同じ session_id を持つ新しいセッション行をデータベースに作成します。
  2. アプリケーション内では、「古い」セッションは使用できず、古いセッション データは使用できません。
  3. その後、単にページをリロード (F5) すると、古いデータを含む正しいセッションが正常にロードされます。

アプリケーションはActionController::Base.session_store = :active_record_store、複数のデータベースを使用します (サブドメインごとに 1 つ、私の決定ではありませんでした)。正しいデータベースが before_filter として選択され、レールはこれらのデータベースにセッションを保存します。

私の推測では、サーバーの再起動後、何かがまだ正しく設定されておらず、セッションが間違ったデータベースで検索され、最初のリクエストのために保持されます (ただし、を介して設定された後、正しいデータベースに保存されますActiveRecord::Base.establish_connection)。

私の推測が正しければ、接続を確立した後に正しいセッションをロードすると、これが解決するはずです。セッションをデータベースから完全にリロードするか、Rails にすべてのセッションでカスタム データベースを使用するように指示する方法はありますか?

前もって感謝します!

4

0 に答える 0