0

我緩存有關用戶會話當前登錄信息。只要使用全局應用程序類中的CurrentUser屬性,就會加載此信息。它通過對我的自定義實現的MembershipProvider,這無論是從裝載會話的用戶時,或從數據庫加載用戶並引發在會話的用戶對象調用的getUser()做到這一點。會話過期和用戶不再有效

我應該如何處理這種情況?

  1. 用戶登錄。
  2. 管理員刪除用戶(或禁用...重點是 他們無法登錄任何更多)。
  3. 用戶會話過期。
  4. 用戶導航到一個頁面或發出請求,或什麼的。

目前如果發生這種情況下,NullReferenceException異常拋出所有的地方,因爲ASP .NET框架調用的getUser(),因爲它無法在數據庫中找到用戶返回什麼(並沒有什麼的因爲它過期了)。

回答

1

如果您的應用程序認爲用戶已登錄,但用戶無法找到,一個選擇可能是使用FormsAuthentication.SignOut()使ASP.NET忘記用戶。然後他們應該被踢回登錄屏幕或匿名模式。

0

遙的getUser()如果你要返回null異常。然後,您可以讓Application_Error事件捕獲該特定異常並重定向到您的登錄頁面。