github にある現在のバージョンの restful_authentication を使用していますが、奇妙なセッションの問題がたくさんあります。サーバーが何らかの形でセッションをユーザーに割り当てているようです。これは、ログアウト/ログインのバリアを越えるときにのみ発生します。
これが例です。サーバーでアクティブなセッションがないので、ユーザー A でアカウントにログインします。別のマシンで、ユーザー B でログインします。次に、ユーザー B からログアウトすると、ログアウト リダイレクトが発生した後、次のようにログインします。ユーザー A. この時点から、そのユーザーとしてログインしたかのようにサイトをナビゲートし続けることができます。ログを介して確認したことは、このハイジャックが発生した場合、セッション ID が同じではないということです。ユーザー A は両方のセッションにログインしていますが、セッション ID はまったく異なります。これは、起こり得ることの一例にすぎません。一見ランダムに見えるため、問題を確実に再現することはできません。
環境や実行しているサーバーの症状ではないようです。雑種とパッセンジャーの両方を使用して問題を再現できます。私は開発と生産でもそれを見てきました。このアプリケーションで db ベースのセッションを使用しており、Rails 2.1.1 で実行しています。ジェネレーターを呼び出すときにステートフル オプションを適用しました。それ以外の場合、セッションの処理方法に他の変更は加えられていません。
更新これは、restful_authentication から直接来た問題のある方法です。
# Accesses the current user from the session.
# Future calls avoid the database because nil is not equal to false.
def current_user
@current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_user == false
end