0

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

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

我手动将角色添加到数据库中,使用适当的 ApplicationId 简单地插入角色中,然后使用我的用户将该新角色添加到 UsersInRoles 表中。看起来很简单,但是上面的 Authorize 失败了。所以我尝试了这个:

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

Authorize 有效(让我登录),但 User.IsInRole("MyRole") 返回 false。我无法为我的生活找出原因。用户在数据库中,用户被分配给应用程序,角色在该应用程序的数据库中,用户被分配给该角色。我还需要做什么才能允许将用户分配给角色?

-shnar

4

1 回答 1

0

我建议你试试:

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

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

于 2013-10-30T14:17:47.603 回答