【问题标题】:Event to capture when a formsauthenticated user is un-authenticated当表单身份验证的用户未通过身份验证时要捕获的事件
【发布时间】:2009-01-26 17:47:09
【问题描述】:

我基本上是在寻找与 FormsAuthentication_OnAuthenticate 相反的事件。当用户注销时,我想从数据库中删除一些值。我尝试将其放入 Session_End 事件中,但执行此操作时用户似乎已经离开了。

更新: 如果我无法确定特定用户何时被取消身份验证(即,由于会话超时),那么有没有办法获取所有当前经过身份验证的用户的列表?如果可以,那么在 Session_End 中,我可以从数据库中删除与当前经过身份验证的用户无关的记录。

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案1】:

    Session_End 不一定会触发 - 例如,如果您不使用 InProc 会话,那么它根本不会触发。如果您的应用程序再次回收或死机,它不会触发。

    最好的办法是将此代码放在一个可以从许多地方调用的共享方法中:

    1. 在您的 LoginStatus 控件中,您可以设置 LoggingOut 事件 - 在那里调用您的方法来处理明智地注销的人。
    2. 如果您在 Session_End 事件中使用 InProc 会话,但请确保检查它们是否已注销(如您所见)。
    3. 如果您不使用 InProc 会话,则需要更多创意。也许看看有一个不时触发的事件(可能在 Session_Start 上无论如何都会触发),该事件通过并清除那些上次活动时间早于会话超时的用户(如 Greg 所述)。

    不幸的是,Membership class 提供了一些有用的细节,但不是全部:

    GetNumberOfUsersOnline
    

    这将“获取当前访问应用程序的用户数”。 - 很棒,但也是唯一能吸引用户的方法:

    GetAllUsers      // Gets all the users from the storage provider (can be paged)
    FindUsersByName
    FindUsersByEmail
    

    遗憾的是,这些都没有根据计数仅返回“活跃用户”的属性。

    查看 MembershipUser 的成员,没有“IsOnline”属性 - 只有 LastLogonDate 和 LastActivtyDate - 由于网络的断开连接性质,这可能与您将获得的一样好。

    【讨论】:

      【解决方案2】:

      我想你让他们通过点击按钮或链接或类似的东西注销。为什么不把代码放在同一个事件/块中。在您放置 FormsAuthentication.SignOut() 调用的位置附近。

      【讨论】:

        【解决方案3】:

        Global.asax 中有一个 Session_End 处理程序,您可以在其中放置您想要在会话到期时执行的操作。

        我不确定这是否是您想要的。会话和身份验证是两个不同的东西。如果您的身份验证技术向用户(在 cookie 中)提供 FormsAuthenticationTicket 并且该票证具有到期时间,那么身份验证的到期时间是通过该票证控制的。它不会在服务器上主动管理。用户提出的每个请求都会提供票证,然后服务器会确定用户是否仍然通过身份验证。

        底线是,您可以检测用户的会话何时到期,但您可能无法确定他们的身份验证何时到期,除非两个到期值相同。

        【讨论】:

          【解决方案4】:

          如果您使用 SQL 提供程序,aspnet_Users 表有一个“LastActivityDate”列。如果您将其与表单身份验证的超时值进行比较,您可能会得出一个绝对未登录的用户列表。如果他们使用“注销”链接手动注销,您的计数将会很低。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-12-25
            • 2016-03-19
            • 2013-10-30
            • 1970-01-01
            • 2015-02-24
            • 1970-01-01
            • 2012-03-15
            相关资源
            最近更新 更多