0

我在会话中缓存有关当前登录用户的信息。CurrentUser每当使用我的全局应用程序类上的属性时,都会延迟加载此信息。它通过在我的 MembershipProvider 的自定义实现上调用 GetUser() 来做到这一点,它要么从会话加载用户,要么从数据库加载用户并在会话中抛出用户对象。

我应该如何处理这种情况?

  1. 用户登录。
  2. 管理员删除用户(或停用......关键是他们无法再登录)。
  3. 用户会话到期。
  4. 用户导航到页面或发出请求,或其他任何内容。

目前,如果发生这种情况,NullReferenceExceptions 会到处抛出,因为 ASP .NET 框架调用 GetUser() 没有返回任何内容,因为它在数据库中找不到用户(并且会话中没有任何内容,因为它已过期)。

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 回答