My MVC4アプリケーションは、Visual Studio 2010に付属のテンプレートに従って作成され、SimpleMembership
を使用しています。データベースにユーザーがいなくてもユーザーがログインしていて、アプリケーションが再起動されました
何分か前に、データベースのすべてのテーブルからすべてのデータを削除し、IISをiisresetコマンドで再起動しました。以前の人生から残された唯一のものは、Operaブラウザのクッキー(.ASPXAUTH
と__RequestVerificationToken_L3J1bmV0c29mdC9BdXRoVGVzdA2
)です(私はクリーンアップ前にログアウトしませんでした)。
ホーム/インデックスを読み込もうとすると、Request.IsAuthenticated == true
とUser.Identity.Name
が表示されます。これは最後のユーザーの名前です。
アプリケーションを再構築した後も同じことが起こります。
どのように??? !!!
はい、問題があります。ログアウトするクライアント側のCookieを削除することは適切な解決策ではなく、サーバー側のセッションが破棄されないため、大きなセキュリティホールになります。それは悪い習慣であるので、私はいつもそうすることを人々に断った。これは実際のログアウトではなく、セッションのキーを忘れるだけです。 – Paul
このシナリオでは、ユーザーのCookie以外は何も残っていません。データベース内のすべてのデータを削除しました。あなたのセッションがデータベースにあれば、それもなくなりました。それがin-procまたはSessionStateサーバーの場合、それは持続するかもしれませんが、それは重要ではありません。セッションはタイムアウトすると削除されます。問題なしでクッキーを削除することができます。関連するセッションが存在する場合は、自然に消えます。それにはアクセスする方法がないため、一時的に存在する危険はありません。 –
ただし、心配している場合は、IISをリセットするか、SessionStateサーバーを再起動してください。 * No *セッションは、それに関連するすべてのデータを削除したため、この時点でもう有効です。 –