我只是想知道IActionFilter
和IAuthorizationFilter
之間是否有區別?IActionFilter和IAuthorizationFilter之間的區別
我假設我們可以在IActionFilter
下實現相同的邏輯,可能有IAuthorizationFilter
......這是真的嗎?
謝謝!
我只是想知道IActionFilter
和IAuthorizationFilter
之間是否有區別?IActionFilter和IAuthorizationFilter之間的區別
我假設我們可以在IActionFilter
下實現相同的邏輯,可能有IAuthorizationFilter
......這是真的嗎?
謝謝!
根據問題,是的,我們可以在IActionFilter
和IAuthorizationFilter
中執行相同的邏輯。但唯一的執行順序不同。
ASP.NET MVC框架支持四種不同類型的過濾器:
Authorization – Implements IAuthorizationFilter Attribute.
Action – Implements IActionFilter Attribute.
Result – Implements IResultFilter Attribute.
Exception – Implements IExceptionFilter Attribute.
注:濾膜在上面列出的順序執行。行動過濾和異常過濾器所有其他類型的filter
後總是執行前
授權過濾器總是被執行。
Authorization
過濾器用於實現控制器操作的authentication
和authorization
。例如,授權過濾器就是授權過濾器的一個例子。
動作過濾器包含在執行控制器動作之前和之後執行的邏輯。例如,您可以使用操作過濾器來修改控制器操作返回的視圖數據。
Result
過濾器包含在執行視圖結果之前和之後執行的邏輯。例如,您可能想要在將視圖呈現給瀏覽器之前修改視圖結果。
Exception
過濾器是要運行的最後一種過濾器。您可以使用異常過濾器來處理由控制器操作或控制器操作結果引發的錯誤。您也可以使用異常過濾器來記錄錯誤。
每種不同類型的過濾器都以特定的順序執行。如果要控制執行相同類型的過濾器的順序,則可以設置過濾器的Order屬性。
注意:所有操作篩選器的基類是System.Web.Mvc.FilterAttribute
類。
是的,你可以使用動作過濾器來實現一個認證過濾器。從here:
您可以使用操作篩選器進行日誌記錄,身份驗證,輸出緩存或其他任務。
我怕我不知道爲什麼存在其他差異比IAuthorizationFilter
是一個簡單的界面與它的一種方法,它也有較少的性能上它的語境。
授權過濾器在操作管道的早期運行。例如,如果條件不符合,它們可以逃離行動管道。 (使用它的示例MVC框架屬性是[Authorize],[RequireHttps])
動作過濾器在授權過濾器之後執行,並且它可以參與動作的預處理和後處理。