我试图在我的ASP.NET MVC应用程序中使用AuthorizeAttribute但我不明白它是如何工作的。当我在家庭控制器的索引操作中设置用户(仅用于测试目的)时,我给他"管理员"角色。然后我检查用户的属性IsInRole
,它显示当前用户在"管理员"角色。但是当我尝试使用Roles = "Admin"
访问AuthorizeAttribute修饰的操作时,我被重定向到登录页面。所以我的问题是,AuthorizeAttribute正确检查了哪个对象 - 如果它不是用户对象,那么它是什么?我的代码:
public ActionResult Index()
{
HttpContext.User = new GenericPrincipal(new GenericIdentity("User1"), new[] { "Admin" });
var isAdmin = User.IsInRole("Admin"); // shows "true" on breakpoint
return View();
}
[Authorize(Roles = "Admin")]
public ActionResult Contact() // cannot get access to this action
{
return View();
}