我有一个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
答案 0 :(得分:0)
我建议你试试:
using (RoleManager<IdentityRole> rm = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(YOUR_DATABASE_CONTEXT)))
{
if (!rm.RoleExists("MyRole"))
rm.Create(new IdentityRole("MyRole"));
}
而不是手动将角色添加到角色表。