【问题标题】:How to get users based on role?如何根据角色获取用户?
【发布时间】:2011-01-24 06:30:23
【问题描述】:

如何从 MembershipUserCollection 中检索“客户”角色中的用户?

【问题讨论】:

    标签: asp.net c#-3.0 asp.net-membership


    【解决方案1】:

    Roles.GetUsersInRole 返回角色中用户名的string[]。如果你真的想要 MembershipUser 对象,你可以使用:

    var list = Roles.GetUsersInRole("roleName").Select(Membership.GetUser).ToList()
    

    当然,这是性能密集型的,因为它会为每个用户访问一次数据库。

    如果你愿意放弃提供者独立,你可以直接查询底层数据库,在数据库服务器上进行join,得到特定角色的所有用户。

    【讨论】:

    • 在 web.config 中错过了
    【解决方案2】:
    【解决方案3】:

    要绑定到ListBox,您可以使用:

    ListBox1.DataSource = System.Web.Security.Roles.GetUsersInRole("Role_Name");
    ListBox1.DataBind();
    

    【讨论】:

      【解决方案4】:

      使用 RoleProvider 类http://msdn.microsoft.com/en-us/library/system.web.security.roleprovider.aspx

      它有一个 FindUsersInRole 方法

      【讨论】:

      • 请注意 FindUsersInRole 接受两个参数,第二个参数是每个用户名应包含的字符串(即 LIKE)以便匹配。这是一种愚蠢的方法,无论用户名如何,都不能用于查找角色中的所有用户。
      • @dpant RoleProvider 是一个抽象类!我的答案中链接上的示例正是“示例”-您通过扩展 RoleProvider 类和完全抽象方法来定义该方法的工作原理以及返回的内容,因此,如果您希望忽略第二个参数并仅传入 Null你可以。我建议你在发布无意义的 cmets 之前花点时间了解这些东西是如何工作的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2014-08-18
      • 2014-10-22
      • 2018-08-20
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      相关资源
      最近更新 更多