2

Rails 3.2.18アプリでかなり奇妙な問題が発生し始めました

Railscasts で説明されているように、Cookie による認証を使用しています。過去 1 年間 (3.2.18 にアップグレードするまで) はすべて順調でした。

しかし、私は今次の問題を抱えています。正常にログオンでき、いくつかのページに移動できます。ただし、不明な数のページ クリックの後、500 内部ページ エラーが発生します。本番ログに次のエラーが表示されます (実際のトークン コードを変更しました)

ActiveRecord::RecordNotFound (Couldn't find User with auth_token = XXXXXXXXXXXXXX):
  app/controllers/application_controller.rb:28:in `current_user'

そのユーザーのデータベース エントリを見ると、正しい auth_token エントリが表示されます。アプリケーション コントローラーで参照されているコード行は次のとおりです。

@current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]

そうです、Rails 4 で機能するためには、これを find_by ステートメントではなく where ステートメントに置き換える必要がありますが、これが問題を引き起こしているとは思いません。最初の認証とその後の数ページも奇妙ですクリックは機能しますが、機能しません。

再度ログインできるようにするには、ブラウザー セッションをシャットダウンする必要があります (Firefox、Safari、および IE でも同じです)。その後、再起動すると、しばらくの間ログインできます。

さらに、この問題は開発では発生せず、本番環境でのみ発生します

4

1 に答える 1