代码之家  ›  专栏  ›  技术社区  ›  Chicago

ASP.NET窗体身份验证获取所有登录用户(所有用户列表或计数)

  •  8
  • Chicago  · 技术社区  · 16 年前

    我正在使用.NET 3.5。 此外,还使用表单身份验证。

    有什么方法可以得到 所有登录用户 或A 计数 在ASP.NET?

    注意:我不使用成员资格和角色

    4 回复  |  直到 16 年前
        1
  •  6
  •   Russ Cam    16 年前

    不,除非

    1. 您已经在自己的代码中定义了一个

    2. 您使用的是具有 GetNumberOfUsersOnline() 方法定义。

    3. 您正在使用自定义成员资格提供程序,并为 获取用户数第行() 方法自己

    默认的aspnet成员资格提供程序通过查询SQL Server数据库并检查 LastActivityDate 针对每个用户存储 UserIsOnlineTimeWindow 可以在web.config中设置的属性。如果 上次活动日期 大于当前时间减去 用户同步时间窗口 值(表示分钟),则认为用户处于联机状态。

    如果您想做类似的事情,那么您可以考虑实现类似的方法。您可以通过以下方式查看默认提供程序的代码: downloading the source code . 要完成图片,您可能还需要运行 aspnet_regsql.exe 以便可以看到默认提供程序使用的存储过程。

        2
  •  4
  •   I Am Back    16 年前

    会员制提供商确实有其好处,但为了在线跟踪用户,您还可以:

    1. 添加列 上次活动日期 到您的用户表,并在登录期间和该用户的所有页面加载时从代码中更新它。

    2. 为了让用户了解过去 X 分钟只使用以下SQL

      Select * from Users where LastActivityDate >
      DATEADD(minute,  -(X), GETDATE())  
      
        3
  •  3
  •   Ian Ringrose    16 年前

    表单身份验证存储了所有IT_ 传递到的cookie中的状态 用户浏览器。

    (这使表单身份验证可以在Web场上工作)

    因此,无法从标准表单身份验证中获取登录用户等的列表。

    但是,表单身份验证具有当它对用户进行身份验证时触发的事件等。您可以在这些事件中更新自己的用户列表_

    但是,当浏览器将cookie过期时,用户将被记录为“cookie”,您将发现很难在正确的时间从列表中正确删除所有记录的用户。


    你最好把上次看到每个用户的时间存储起来,然后把你看到的用户列表,比如说最近5分钟。例如,列出 积极的 用户。

        4
  •  1
  •   Henry Gao    16 年前

    我在global.aspx下使用了session_start和session_end。除用户关闭浏览器外,大多数情况下都能正常工作。服务器端需要等待会话过期才能删除用户。