Identity API 2.0检查用户是否是View上的管理员角色

时间:2015-03-12 17:12:10

标签: asp.net-mvc asp.net-mvc-5 asp.net-identity-2

在脚手架的局部视图_Layout.cshtml内定义了应用程序的导航栏。我想修改它,以便只有在记录的用户为"Admin"时才显示某些链接。

在我的Seed()迁移文件的Configuration.cs方法中,定义如下:

bool AddUserAndRole(ApplicationDbContext context) {
        IdentityResult ir;

        var rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        ir = rm.Create(new IdentityRole("Admin"));

        var um = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));

        var user = new ApplicationUser() { UserName = "admin", FirstName = "System", LastName = "Administrator" };
        ir = um.Create(user, "admin");

        if(ir.Succeeded == false) {
            return ir.Succeeded;
        }

        ir = um.AddToRole(user.Id, "Admin");

        return ir.Succeeded;
    }

如您所见,有一个名为“Admin”的角色,新创建的用户被添加到该角色。

话虽如此,我已在我的_Layout.cshmtl内尝试了几种方法来尝试确定当前用户是否为"Admin"

@if(Roles.IsUserInRole(User.Identity.Name, "Admin")) { }

@if (User.IsInRole("Admin")) { }

但似乎没有效果。我该怎么做?

1 个答案:

答案 0 :(得分:5)

@if (User.IsInRole("Admin"))
    {
         <li>@Html.ActionLink("Link Text", "Controller", "Action")</li>
    }

这对我有用。