0

セッションで現在ログインしているユーザーに関する情報をキャッシュします。CurrentUserこの情報は、グローバルアプリケーションクラスのプロパティが使用されるたびに遅延読み込みされます。これは、MembershipProviderのカスタム実装でGetUser()を呼び出すことによって行われます。これは、セッションからユーザーをロードするか、DBからユーザーをロードしてセッションにユーザーオブジェクトをスローします。

このシナリオをどのように処理する必要がありますか?

  1. ユーザーがログインします。
  2. 管理者はユーザーを削除します(または非アクティブ化します...要点は、ユーザーがこれ以上ログインできないことです)。
  3. ユーザーのセッションが期限切れになります。
  4. ユーザーはページに移動したり、リクエストを行ったりします。

現在、このシナリオが発生した場合、ASP .NETフレームワークがGetUser()を呼び出すため、NullReferenceExceptionsがいたるところにスローされます。これは、データベースでユーザーが見つからないために何も返さないためです(また、セッションが期限切れになったため、セッションには何もありません)。

4

2 に答える 2

1

ユーザーがサインインしているとアプリが認識しているが、ユーザーが見つからない場合、FormsAuthentication.SignOut()ASP.NET にユーザーを忘れさせるために使用するオプションがあります。その後、ログイン画面または匿名モードに戻る必要があります。

于 2010-08-04T06:23:01.557 に答える
0

null を返す場合は、GetUser() から例外をスローします。次に、Application_Error イベントでその特定の例外をトラップし、ログイン ページにリダイレクトすることができます。

于 2010-08-04T05:58:48.367 に答える