检查要显示的用户角色

时间:2018-04-23 17:24:06

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

我最近在我的ASP.NET项目中添加了Identity,但是我无法检查用户角色。

我最初在Startup.cs中创建了Admin角色:

private void createRolesandUsers()
{
        ApplicationDbContext context = new ApplicationDbContext();

        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));

        if (!roleManager.RoleExists("Admin"))
        {

            var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
            role.Name = "Admin";
            roleManager.Create(role);

            var user = new ApplicationUser();
            user.UserName = "admin";
            user.Email = "admin@tpms.com";

            string userPWD = "********";

            var chkUser = UserManager.Create(user, userPWD);

            if (chkUser.Succeeded)
            {
                var result1 = UserManager.AddToRole(user.Id, "Admin");
            }
        }
}

在我的UserController.cs中,我有一个检查用户是否是管理员的功能:

public Boolean isAdminUser()
{
    if (User.Identity.IsAuthenticated)
    {
        var user = User.Identity;
        ApplicationDbContext context = new ApplicationDbContext();
        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
        var s = UserManager.GetRoles(user.GetUserId());
        if (s[0].ToString() == "Admin")
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    return false;
}

但是,我似乎找不到从我的视图和控制器访问isAdminUser()函数的方法。

我对IsUserInRole()函数进行了一些研究,但当我尝试时:

@if (Roles.IsUserInRole(User.Identity.Name, "Admin")) { Html.ActionLink("Edit", "Edit", new { id=item.GuestID }); }

if语句总是返回false。

1 个答案:

答案 0 :(得分:2)

尝试将HttpContext.Current.User.IsInRole("Admin");用作与System.Web.Security命名空间下的旧成员资格提供程序相关的Roles.IsUserInRole,并在roleManager中需要web.config提供程序配置。

@if(HttpContext.Current.User.IsInRole("Admin")) 
{
    Html.ActionLink("Edit", "Edit", new { id = item.GuestID });
}

另一种方法是使用UserManager

userManager.IsInRole("userId","Admin")