MVC - 動作過濾器

  • 5154
  • 0

執行Controller的方法時,針對某些方法或整個Controller,開始前中後必要執行的程序。

可設定特性(屬性)於繼承controller的類別上或是Controller的方法中。

此篇只為了記錄而記錄。


 

關於使用者帳戶或者權限相關 : 

若設定在Controller的類別上 就是所有方法都套用該特性。

[Authorize(Roles ="Admin")]
    使用者登入權限若不等於該權限則無法進入該方法

[Authorize(Users ="XXX,XXX")]
    只允許部分帳戶使用該方法

[Authorize]
    登入後才能操作該方法

[AllowAnonymous]
        可讓該方法避開特性規範

 

網頁安全性 : 

[ValidateAntiForgeryToken]
    需搭配在VIEW的 @Html.AntiForgeryToken()。兩者合用就能抵擋部分形式的惡意攻擊

[ChildActionOnly]
   不接收使用者自訂網址(Url)呼叫Controller中對應的方法

 

自訂動作過濾器 :

需繼承.NET抽象類。因無回傳直可透過 ViewData、TempData、Session傳遞資料
 namespace MyApplication.MyActionFilter
    {
        public class MyActionFilter : ActionFilterAttribute
        {   
            // 方法完成後呼叫
            public override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                base.OnActionExecuted(filterContext);
            }

            // 執行方法前呼叫
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                base.OnActionExecuting(filterContext);
            }

            // 結果執行後呼叫
            public override void OnResultExecuted(ResultExecutedContext filterContext)
            {
                base.OnResultExecuted(filterContext);
            }

            // 執行結果前呼叫
            public override void OnResultExecuting(ResultExecutingContext filterContext)
            {
                base.OnResultExecuting(filterContext);
            }
        } 
    }

 

 


多多指教!! 歡迎交流!!

你不知道自己不知道,那你會以為你知道