ユーザーがパスワードを更新するときに、電話や別のブラウザなどのセッションをすべて無効にして、現在のデバイスに新しいセッションを1つ与えたいとします。 私はちょうど sign_out @user; sign_in @user
を呼び出すとうまくいくようですが、うまくいくようです。パスワード変更後にすべてのユーザーセッションを終了する
しかし、Devise#sign_outおよびWarden#logoutメソッドの実際の実装を除いて、この主張をサポートするドキュメントは見つかりません。
文書化された解決策はありますか?
ありがとうございました!
ただし、Devise/Wardenは実際にこれを非常にうまく処理します。ワーデンはセッション識別子を取り消さない。むしろ、セッションからシリアル化されたユーザーを削除するだけです(ユーザーIDなど)。これにはユーザがサインインする必要があります。 – max
デフォルトのCookieStoreセッションストレージメカニズムを使用している場合、すべてのデバイスからセッションを取り消す簡単な方法はありません。これは、セッションがその特定のデバイスによって保持されているセッション識別子にリンクされており、ストレージがそのデバイス上にあるためです。したがって、どのセッション識別子がユーザレコードにリンクされているかを知ることは不可能です。データベースストア/ memcachedを使用している場合は、データベースを照会してセッションを削除できます。 – max
ありがとうございました! 'reset_session'は特定のユーザの他のセッションをすべて期限切れにしますか? –