0

在我的 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 进行登录和用户管理。

4

0 回答 0