セッションが期限切れになり、ユーザーは無効になりました
-
25-09-2019 - |
質問
セッション内で現在ログインしているユーザーに関する情報をキャッシュします。この情報は、 CurrentUser
グローバル アプリケーション クラスのプロパティが使用されます。これは、MembershipProvider のカスタム実装で GetUser() を呼び出すことによって行われます。これにより、セッションからユーザーがロードされるか、DB からユーザーがロードされてセッションにユーザー オブジェクトがスローされます。
このシナリオにはどう対処すればよいでしょうか?
- ユーザーがログインします。
- 管理者はユーザーを削除します(または非アクティブ化...ポイントは、これ以上ログインできないことです)。
- ユーザーのセッションが期限切れになります。
- ユーザーはページに移動するか、リクエストなどを行います。
現在、このシナリオが発生すると、ASP .NET フレームワークが GetUser() を呼び出しますが、データベース内でユーザーが見つからないため、何も返されない (有効期限が切れたため、セッション内に何もない) ため、NullReferenceExceptions があちこちでスローされます。
解決
ユーザーがサインインしているとアプリが認識しているにもかかわらずユーザーが見つからない場合、1 つのオプションは次の方法を使用することです。 FormsAuthentication.SignOut()
ASP.NET にユーザーのことを忘れさせます。その後、ログイン画面または匿名モードに戻る必要があります。
他のヒント
null を返す場合は、GetUser() から例外をスローします。その後、Application_Error イベントでその特定の例外をトラップし、ログイン ページにリダイレクトすることができます。
所属していません StackOverflow