MVC 5 检查用户角色

23

在MVC 5中,我如何找出已登录用户的角色?

我使用以下代码创建了用户:

    private bool AddUserAndRole()
    {
        IdentityResult ir;
        var rm = new RoleManager<IdentityRole>
            (new RoleStore<IdentityRole>(new ApplicationDbContext()));
        ir = rm.Create(new IdentityRole("admin"));

        var user = new ApplicationUser() { UserName = "Admin" };
        var result = UserManager.Create(user, "somepassword");
        UserManager.AddToRole(user.Id, "admin");

        return true;
     }

在用户登录网站后,我应该如何在控制器中检查该用户是否具有"admin"角色?我只找到了一种看起来不太快的方法。

        var rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
        var role = rm.FindByName("admin");
        bool result = User.IsInRole(role.Name); //true

我们有其他的方式吗?


2
如果您要使用Alex的答案,或者在检查用户是否应该被允许进入控制器/网页时,请在控制器上方使用[Authorize(Roles = "admin")]。 - Casey Sebben
1个回答

94
bool result = User.IsInRole("admin") 

容易多了。:)


啊,你比我快了.. :-) - Henk Mollema
1
该死!我差点就成功了! :) - Duke
请不要忘记使用Microsoft.AspNet.Identity。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接