代码之家  ›  专栏  ›  技术社区  ›  Brandon Montgomery

会话过期,用户不再有效

  •  0
  • Brandon Montgomery  · 技术社区  · 14 年前

    我缓存会话中当前登录用户的信息。每当 CurrentUser 使用了全局应用程序类的属性。它通过对membershipProvider的自定义实现调用getuser()来实现这一点,它要么从会话中向上加载用户,要么从数据库中加载用户并在会话中抛出用户对象。

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

    1. 用户登录。
    2. 管理员删除用户(或停用…点是 他们不能再登录了)。
    3. 用户会话过期。
    4. 用户导航到一个页面或发出请求,或其他。

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   dahlbyk    14 年前

    如果您的应用程序认为用户已登录,但找不到该用户,则可以使用 FormsAuthentication.SignOut() 使ASP.NET忘记用户。然后应该将它们返回到登录屏幕或匿名模式。

        2
  •  0
  •   nw.    14 年前

    如果要返回空值,则从getuser()中引发异常。然后您可以让应用程序捕获特定的异常并重定向到您的登录页面。