在我的 FilterConfig 中,我定义了一个全局授权属性。通过这样做,默认情况下我不允许匿名访问所有控制器 - 因此用户需要登录。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new RedirectToHomeOnCryptographicExceptionAttribute());
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
}
}
然后我有我的控制器类。我希望一种方法仅限于具有管理员角色的用户。
public class FilesController : Controller
{
[Authorize(Roles="Admin")]
public ActionResult TestAccess()
{
if (!User.IsInRole("Admin"))
return Content("Authorization not working as expected");
return Content("hello");
}
}
当我现在使用非管理员用户登录并打开 /Files/TestAccess 时,我得到“授权未按预期工作”。这很奇怪,我原以为方法上的 [Authorize(...)] 只允许管理员。
如何防止非管理员访问我的控制器操作?
我正在使用 Brock Allen 的 MembershipReboot 进行登录和用户管理。