【问题标题】:Session Expires and User is no longer valid会话过期和用户不再有效
【发布时间】:2010-08-04 14:23:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net session asp.net-membership membership-provider session-timeout


    【解决方案1】:

    如果您的应用认为用户已登录但找不到该用户,则一种选择可能是使用FormsAuthentication.SignOut() 让 ASP.NET 忘记该用户。然后他们应该被踢回登录屏幕或匿名模式。

    【讨论】:

      【解决方案2】:

      如果要返回 null,请从 GetUser() 中抛出异常。然后您可以让 Application_Error 事件捕获该特定异常并重定向到您的登录页面。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-26
        • 1970-01-01
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        • 2017-01-24
        • 1970-01-01
        相关资源
        最近更新 更多