按用户ID获取用户角色的最佳方法是什么?它没有直接的方法吗? System.Web.Security.Roles提供了直接获取当前登录用户角色的方法,但我希望我的管理员用户可以通过其ID或用户名访问其他用户角色。
答案 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;
如果您正在执行多个用户查找,或者已经打开了上下文,则此功能特别有用。