为什么我的User.IsInRole(" MyRole")失败了手动添加的角色?

时间:2013-10-02 03:38:16

标签: asp.net-mvc

我有一个MVC网站,我有一个索引,我想限制到一个特定的角色(现在称之为“MyRole”)。我最初这样做了:

[Authorize(Roles="MyRole")]
public ActionResult Index()
{
    return View();
}

我手动将角色添加到数据库中,使用适当的ApplicationId简单地插入到Roles中,然后将我的用户添加到UsersInRoles表中。看起来非常直接,但上面的授权失败了。所以我尝试了这个:

[Authorize]
public ActionResult Index()
{
    if (!User.IsInRole("MyRole"))
        return Redirect("Error");
    return View();
}

授权工作(让我登录)但User.IsInRole(“MyRole”)返回false。我不能为我的生活找出原因。用户在数据库中,用户被分配到应用程序,角色在该应用程序的数据库中,并且用户被分配到该角色。我还需要做些什么才能将用户分配到角色?

-shnar

1 个答案:

答案 0 :(得分:0)

我建议你试试:

using (RoleManager<IdentityRole> rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(YOUR_DATABASE_CONTEXT)))
    {
       if (!rm.RoleExists("MyRole"))
           rm.Create(new IdentityRole("MyRole"));
    }

而不是手动将角色添加到角色表。