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")].
之类的操作在控制器或操作级别应用它们
在 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")].
之类的操作在控制器或操作级别应用它们