【问题标题】:how to Get Number Of Users Online for each role using ASP.NET如何使用 ASP.NET 获取每个角色的在线用户数
【发布时间】:2012-05-15 14:39:26
【问题描述】:

我想知道为每个角色登录到我的 ASP.NET 应用程序的用户数 我有一个(管理员)角色和一个(休息)角色 我想知道每个人的在线用户数,而不是整个应用程序这个方法做了什么:

Membership.GetNumberOfUsersOnline()

【问题讨论】:

    标签: asp.net visual-studio-2010 security asp.net-membership


    【解决方案1】:

    您需要自己枚举用户。如果你利用

    Membership.GetAllUsers()
    

    您将获得所有可用用户的集合。然后您可以遍历每个用户并检查IsOnline 属性以查看该用户是否在线。要确定用户的角色,可以使用Roles 类中的方法。

    例如,如果您有两个角色 adminrest,并且您想显示每个角色中有多少用户在线,您可以执行以下操作:

    var adminCount = 0, restCount = 0;
    foreach ( var user in Membership.GetAllUsers().Where(u => u.IsOnline) )
        if (Roles.IsUserInRole(user.UserName, "admin"))
            adminCount++;
        else if (Roles.IsUserInRole(user.UserName, "rest"))
            restCount++;
    
    // do something with adminCount and restCount
    

    如果您有更复杂的角色结构或多个角色,您可以使用映射来存储每个角色的计数。逻辑取决于您想要完成什么,这应该提供表达您的自定义计数逻辑所需的所有部分。

    【讨论】:

    • 您好 mellamokb,感谢您的回复,我们会进一步调查
    • 你能说得更具体些吗
    • 是的,是的,达迪明白了,tnks 你能解释一下这个 ligne (((( Membership.GetAllUsers().Where(u => u.IsOnline) ))) 我正在使用 VB
    • 这是 LINQ 代码,仅过滤掉在线用户。如果您不熟悉 LINQ 或无权使用它,可以使用 if 语句以相同的方式完成:foreach (var user in Membership.GetAllUsers()) { if (user.IsOnline) { /* Same logic here */ } }
    • 就是这样 tnnksssssssssssssssss ^^ 问题已解决 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim GIAC As Int16 = 0 Dim u As Int16 = 0 For Each user In Membership.GetAllUsers() If user.IsOnLine Then If Roles.IsUserInRole(user.UserName, "GIAC") or Roles.IsUserInRole(user.UserName, "GIAC-Administrateurs") Then GIAC += 1 End If End If Next lblCountEnLigne.Text = GIAC.ToString() 结束子
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2017-12-22
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多