SimpleMembershipProvider GetRoleByUserID?

时间:2013-05-24 16:45:12

标签: asp.net-mvc roles simplemembership

按用户ID获取用户角色的最佳方法是什么?它没有直接的方法吗? System.Web.Security.Roles提供了直接获取当前登录用户角色的方法,但我希望我的管理员用户可以通过其ID或用户名访问其他用户角色。

1 个答案:

答案 0 :(得分:0)

您可以从userId获取用户名,例如

((ExtendedMembershipProvider)Membership).GetUserNameFromId(userId)

(您也可以将Membership投射到SimpleMembershipProvider,因为它继承自ExtendedMembershipProvider)。

然后你可以使用:

  • Roles.GetUsersInRole(roleName)将按用户名列出给定角色中的所有用户。
  • Roles.GetRolesForUser(userName)将列出给定用户名的所有角色名称

(您也可以从用户名获取userId,例如使用WebSecurity.GetUserId(userName)来处理这些结果)。

使用带有模板帐户模型的UsersContext,还有另一种获取userId的userName的方法,即:

string username = context.Users.Where(x=>x.userid == userid).FirstOrDefault().UserName;

如果您正在执行多个用户查找,或者已经打开了上下文,则此功能特别有用。