ASP.NET MVC IAuthorizationFilter 用法

ASP.NET MVC IAuthorizationFilter usage

在 ASP.NET MVC 中,IAuthorizationFilter 将 运行 任何其他过滤器和操作方法之前。那么对于某些检查和分析传入的 HttpRequest 的逻辑需要在任何其他逻辑 运行 之前执行的场景,实现 IAuthorizationFilter 是否合适?或者 IAuthorizationFilter 应该只用于 Authorization 相关的逻辑,那么我还应该采取什么其他方式呢?

将 IAuthorizationFilter 用于授权以外的任何事情都不是一个好主意。您可以只创建一个带顺序的全局过滤器,这样您的过滤器就可以在任何其他动作过滤器之前执行

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new SpecialFilterAttribute(), 1);
    filters.Add(new LogFilter(), 2);
}

这是与之相关的另一个 SO question

授权过滤器应该只用于授权。对于不同的目的,有不同的过滤器。您必须通过继承正确的类型来创建自己的类型。 https://msdn.microsoft.com/en-us/library/gg416513(VS.98).aspx

我不建议为应用程序的每个操作应用授权过滤器,最好通过简单地执行 [AllowUserWithPermissions("ManageScenarious")].

之类的操作在控制器或操作级别应用它们