.net core MVC Filters 過濾器的使用
阿新 • • 發佈:2018-12-28
告訴 execute 動作 ttr nac pre tel cor 攔截
一、過濾器的優級依次介紹如下(逐次遞減):
Authorization Filter -> Resource Filter -> Acton Filter -> Exception Filter -> Result Filter
1、Authorization Filter (權限過濾器)
/// <summary> /// 權限過濾器 /// </summary> public class GlobalAuthorizationFilter : Attribute, IAuthorizationFilter {/// <summary> /// 優化權最高的過濾器 /// </summary> /// <param name="context"></param> public void OnAuthorization(AuthorizationFilterContext context) { //context.Result = new ObjectResult("IAuthorizationFilter 過濾輸出"); Console.WriteLine("IAuthorizationFilter 過濾輸出"); } }
2、Resource Filter (資源過濾器)
/// <summary> /// 資源過濾器 /// </summary> public class GlobalResourceFilter : IResourceFilter { /// <summary> /// 獲取資源後攔截 /// </summary> /// <param name="context"></param>public void OnResourceExecuted(ResourceExecutedContext context) { Console.WriteLine("IResourceFilter OnResourceExecuted 輸出"); } /// <summary> /// 獲取資源前攔截 /// </summary> /// <param name="context"></param> public void OnResourceExecuting(ResourceExecutingContext context) { Console.WriteLine("IResourceFilter OnResourceExecuting 輸出"); } }
3、Acton Filter
/// <summary> /// Acion過濾器 /// </summary> public class GlobalActonFilter : Attribute, IActionFilter { /// <summary> /// Acion 執行後攔截 /// </summary> /// <param name="context"></param> public void OnActionExecuted(ActionExecutedContext context) { Console.WriteLine("IActionFilter OnActionExecuted Acion 執行後攔截"); } /// <summary> /// Acion 執行前攔截 /// </summary> /// <param name="context"></param> public void OnActionExecuting(ActionExecutingContext context) { Console.WriteLine("IActionFilter OnActionExecuting Acion 執行前攔截"); } }
4、Exception Filter
/// <summary> /// 異常全局過濾器 /// </summary> public class GlobalExceptionFilter : IExceptionFilter { /// <summary> /// 異常處理 /// </summary> /// <param name="context">異常上下文</param> public void OnException(ExceptionContext context) { Console.WriteLine(context.Exception); //如果這裏設為false,就表示告訴MVC框架,我沒有處理這個錯誤。然後讓它跳轉到自己定義的錯誤頁(設為true的話,就表示告訴MVC框架,異常我已經處理了。不需要在跳轉到錯誤頁了,也部會拋出黃頁了) context.ExceptionHandled = false; } }
5、Result Filter
/// <summary> /// 結果過濾器 /// </summary> public class GlobalResultFilter : IResultFilter { /// <summary> /// 動作結果執行後 /// </summary> /// <param name="context"></param> public void OnResultExecuted(ResultExecutedContext context) { Console.WriteLine("IResultFilter OnResultExecuted Acion 動作結果執行後"); } /// <summary> /// 動作結果執行前 /// </summary> /// <param name="context"></param> public void OnResultExecuting(ResultExecutingContext context) { Console.WriteLine("IResultFilter OnResultExecuting Acion 動作結果執行前"); } }
.net core MVC Filters 過濾器的使用