執行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);
}
}
}
多多指教!! 歡迎交流!!
你不知道自己不知道,那你會以為你知道