ユーザーがWebアプリケーションに対して認証されると、セッション中のトークンが保存されます。ユーザーがまだオンラインのときに、管理者がバックエンドでユーザーを削除した場合。ユーザーのセッションをクリアする方法は?
4 に答える
簡単な答え:これを簡単に行うことはできません。セッションを期限切れにすると、ユーザーはその後ログインできなくなります。
長い答え:この機能が本当に重要な場合は、リクエストごとにデータベースをチェックして、ユーザーがログインしてから削除されていないことを確認する必要があります。これにより、セッションにユーザー情報を保存する目的がやや損なわれます。ただし、データベースへの呼び出しは単純なブールチェックである可能性があります(つまり、「ユーザーはまだ有効/アクティブですか」)。
ユーザーのセッションを削除することはできませんか?セッションIDを持っていても、特定のセッションを見つけたり操作したりすることはできないようです。キーとストレージはSessionStateStoreProviderBase
(InProcSessionStateStore
、、、 )の実装によって内部的に管理されておりOutOfProcSessionStateStore
、SqlSessionStateStore
開発者による操作を目的としたものではありません。
削除する前にユーザーをログアウトすることによって?
セッションTimeoutおよびSlidingExpirationプロパティに基づきます。(@chethanに感謝します)。セッションがタイムアウトした後、ユーザーはMSDNSlidingExpirationから再度ログインすることを強制されました
有効期限をスライドすると、リクエストが行われ、タイムアウト間隔の半分以上が経過した場合に、有効な認証Cookieの有効期限がリセットされます。Cookieの有効期限が切れた場合、ユーザーは再認証する必要があります。SlidingExpirationプロパティをfalseに設定すると、構成されたタイムアウト値に基づいて、認証Cookieが有効である時間を制限することにより、アプリケーションのセキュリティを向上させることができます。
system.web>
<sessionState timeout="x minutes"/>
...
</system.web>
または、AuthorizeAttribute.AuthorizeCoreメソッドAuthorizeCoreを使用できます
セッションをクリアする必要がありますか、それとも許可されたページへの今後のアクセスを防ぐ必要がありますか?
各httpサーバー要求で再認証または認証を確認すると、ユーザーは事実上ログアウトされます。