MVC4 基礎篇 通過Controller,ActionFilterAttribute處理權限問題


 

  我們知道Mvc提供我們想要的功能的擴展,我們簡單說說通過擴展Controller,以及ActionFilterAttribute來實現我們想要達到的權限管理內容。

我們來看下面結構:

public class BaseController : Controller
{
   public string User{set;get;}
   public string Limits {set;get;}
   /// <summary>
    /// 
    /// </summary>
    /// <param name="filterContext"></param>
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
     ///實現我們提供的權限操作
       filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Controller = "Index", action = "Default" })); 
   }
}
	

 我們看到通過集成Controller我們可以在運行Controller之前來判斷用戶操作權限,那么我們可以試想此處的應用場景,如當我們的用戶未認證,那么我們可以通過直接判斷跳轉到認證頁面。如采用MVC提供Controller驗證過濾。

下面我們在來看:ActionFilterAttribute

 1     /// <summary>
 2     /// 參數過濾器
 3    /// </summary>
 4     public class ParamFilter : ActionFilterAttribute
 5     {
 6         /// <summary>
 7         /// 執行Action之前操作
 8       /// </summary>
 9         /// <param name="filterContext"></param>
10         public override void OnActionExecuting(ActionExecutingContext filterContext)
11         {
12             ///處理Action之前操作內容根據我們提供的規則來定義這部分內容
13             base.OnActionExecuting(filterContext);
14         }
15 
16         /// <summary>
17         /// 執行Action之后操作
18       /// </summary>
19         /// <param name="filterContext"></param>
20         public override void OnActionExecuted(ActionExecutedContext filterContext)
21         {
22             base.OnActionExecuted(filterContext);
23         }
24     }

通過擴展我們可以通過自己的應用場景以及內容來完成我們所想要達到的目的。

 

通常,可通過創建從抽象 FilterAttribute 類繼承的特性類,來創建操作篩選器。  某些內置操作篩選器(如 AuthorizeAttributeHandleErrorAttribute)繼承自 FilterAttribute 類。  FilterAttribute 派生出來的操作篩選器始終在操作方法運行之前調用。 

諸如 OutputCacheAttribute 之類的其他操作篩選器將繼承抽象 ActionFilterAttribute 類,這使操作篩選器可在操作方法運行之前或之后運行。

可以使用操作篩選器特性來標記任何操作方法或控制器。  如果特性標記控制器,則操作篩選器將應用於該控制器中的所有操作方法。 

有關使用特性的更多信息,請參見利用特性擴展元數據

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM