1. 程式人生 > >MVC過濾器的用法

MVC過濾器的用法

在Asp.net Mvc中當你有以下及類似以下需求時你可以使用Filter功能

  • 判斷登入與否或使用者許可權
  • 決策輸出快取
  • 防盜鏈
  • 防蜘蛛
  • 本地化與國際化設定
  • 實現動態Action

Asp.Net MVC提供了以下幾種預設的Filter:

需要注意一點,Asp.Net MVC提供的ActionFilterAtribute預設實現了IActionFilter和IResultFilter。而ActionFiterAttribute是一個Abstract的型別,所以不能直接使用,因為它不能例項化,所以我們想使用它必須繼承一下它然後才能使用。
Filter繼承於ActionFiterAtribute抽象類並可以覆寫void OnActionExecuting(ActionExecutingContext)和void OnActionExecuted(ActionExecutedContext)以及void OnResultExecuting(ResultExecutingContext)和voidOnResultExecuted(ResultExecutedContext)。


它們的執行先後順序如下:

  OnActionExecuting是Action執行前的操作
  OnActionExecuted則是Action執行後的操作
  OnResultExecuting是解析ActionResult前執行
  OnResultExecuted是解析ActionResult後執行

在這裡只講一個常用的,在Action執行前的操作,用於驗證使用者是否登入或許可權是否通過
下面是過濾器的重寫方法:Message是引數(可以不需要)

然後是Action的使用方法,在Action上面加過濾器的標示,並且可以加引數,如下所示

然後通過瀏覽器訪問上面的Action便可以看到下面的執行順序: