有什么方法可以获得用户在我的控制器中显式角色?这假定使用ASP.NET成员资格和角色提供者。 “IsInRole”不起作用 - 我需要真正获得他们所在角色的名称。获取当前用户的角色
回答
您可以从GetRoles方法中获得角色列表。 (从链接)
string[] rolesArray;
public void Page_Load()
{
RolePrincipal r = (RolePrincipal)User;
rolesArray = r.GetRoles();
...//extra code
}
用户可以在多个角色,所以你不能得到一个角色用户是在,但你可以很容易地得到角色的的列表用户在
可以使用Roles
类型来获得当前登录的用户是在角色列表:
public ActionResult ShowUserRoles() {
string[] roleNames = Roles.GetRolesForUser();
return View(roleNames);
}
或者,如果你想获得角色的任意用户,您可以PA当您拨打Roles.GetRolesForUser()
时,请在用户名中输入ss。
以及如何获得自定义用户特定的数据,如DOB? – xameeramir 2015-05-13 12:11:02
@zameeramir听起来像是一个很好的单独问题,可以在StackOverflow上询问。 – Eilon 2015-05-13 15:58:47
它在这里:http://stackoverflow.com/questions/30216915/how-to-get-user-profile-data-from-asp-net-mvc-custom-identityuser-model/30217188#30217188 – xameeramir 2015-05-13 16:05:02
您可以使用Roles.GetRolesForUser()
获取当前用户的角色。
要检查如果用户属于这里的角色是我做过什么:
Roles.GetRolesForUser().Contains("Administrator")
你也可以通过执行'User.IsInRole(“RoleName”)来检查用户是否在角色中。 – 2013-05-01 07:19:44
Scotty.NET的答案(在对此答案的评论中)似乎是一种更好(更快)的方式来检查用户是否属于对我有一定的作用。 – VoidKing 2013-12-10 19:40:20
Simplemembership在MVC4:
获取用户的角色的
var role = System.Web.Security.Roles.GetRolesForUser().Single();
要检查用户属于某个角色 -
if (User.IsInRole("External"))
我不知道我是否错过了一些奇怪的设置或设置,但我无法获得User.IsInRole
或Roles.GetRolesForUser()
工作。我只是得到一个异常(我认为空引用),并且应用程序刚刚停止。尽管我已经将RoleManager配置为OwinContext和Create方法,就像Microsoft的Identity Sample项目中一样,并且在web.config中启用了角色管理器。 我解决了这个起初使用另一种方法,像这样(db是ApplicationDbContext):
var UserID = User.Identity.GetUserId();
var userRoles = db.Roles.Include(r => r.Users).ToList();
var userRoleNames = (from r in userRoles
from u in r.Users
where u.UserId == UserID
select r.Name).ToList();
这可能不是最优化的方式可能被改变为simplier形式,但它为我工作和可能不需要像其他方法那么多的设置/依赖关系。 第二种方法是这样(添加到您的控制器类):
private ApplicationDbContext db = new ApplicationDbContext();
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
set
{
_userManager = value;
}
}
private ApplicationRoleManager _roleManager;
public ApplicationRoleManager RoleManager
{
get
{
return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
}
private set
{
_roleManager = value;
}
}
内,您的控制器,你现在可以做如:
var UserID = User.Identity.GetUserId();
var RolesForUser = await UserManager.GetRolesAsync(UserID);
我使用ASP.NET MVC 5应用程序只是为了清楚。本例中没有使用RoleManager,但它可以用于创建,查找,更新等角色。使用此方法可以使用await进行异步调用,以防止对您的应用程序有益。
我使用此代码
((ClaimsIdentity)User.Identity).FindAll(ClaimTypes.Role).ToList()
.OrderBy(x => x.Value == "admin" ? 1
: x.Value == "Salesperson" ? 2
: x.Value == "User" ? 3 : 4).First().Value
- 1. Moodle - 获取当前用户角色
- 2. Zend_Navigation:获取当前用户/角色可访问的页面
- 3. 如何在wordpress中获取当前登录用户的角色?
- 4. ASP.net MVC - 获取当前记录的用户角色
- 5. 如何通过Spring Security获取当前用户的角色
- 6. 在MVC中获取当前登录用户的角色6
- 7. MVC 5获取当前用户角色名称
- 8. 如何根据当前用户角色获取权限
- 9. 如何从spring安全中获取当前用户角色3.1
- 10. 获取当前用户名
- 11. Svn获取当前用户
- 12. 获取当前用户
- 13. 获取当前用户名
- 14. RotateAnimation获取当前角度
- 15. Active Directory:获取用户的角色
- 16. 获取当前颜色
- 17. 如何获取角色中的所有用户,包括角色中的角色?
- 18. 使用firebase获取当前用户角度?
- 19. Magento:获取角色和用户
- 20. 如何根据角色获取用户?
- 21. 如何通过角色获取用户
- 22. Active Directory获取用户角色
- 23. 如何为当前用户设置其他用户角色?
- 24. 我试图通过当前用户标识或用户角色获取用户元值
- 25. 获取sifefinity中的当前用户4.4
- 26. 获取WinRT中的当前用户
- 27. 获取当前用户名的AutoIt
- 28. 获取当前用户的GUID?
- 29. WordPress的获取当前用户
- 30. 获取用户当前的经/纬度
对于其他人谁碰上这一点,如果你对角色管理器遇到错误,这里没有被启用,浮现在你的web配置,发现启用roleManager元素,并将=”真“作为属性。 – MisterJames 2012-05-30 21:10:08