ASP.NET MVC授权过滤器

时间:2017-01-12 21:04:07

标签: asp.net-mvc

如果我在ionic platform remove android ionic platform add android 中注册全局Authorize属性,以便每个操作方法只能由经过身份验证的用户访问,并使用FilterConfig.cs装饰某些控制器,以便只有管理员用户可以访问他们,授权逻辑在这些控制器上运行两次吗?我该怎么做才能防止这种情况?

1 个答案:

答案 0 :(得分:1)

您可以使用ASP.NET MVC“FilterProvider”提供程序。这样做有助于您从特定的控制器和操作中获取所有相关的过滤器。

因此,您可以定义自己的提供程序并注册该提供程序而不是默认提供程序。这将使您完全控制asp.net过滤器,您可以根据您的要求删除一些过滤器。

假设我们关注了控制器。

[Authorize]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Whatever()
    {
        return View();
    }

}

我认为您正在寻找一种方法来执行以下操作。专注于指数行动

[Authorize]
public class HomeController : Controller
{
    [ExcludeFilter(typeof(AuthorizeAttribute))] // Excluding Authorize Important !
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Admin() // will follow the declared authorize Attribute
    {
        return View();
    }
}

如果那就是您要找的内容,请参阅此Article