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 类,这使操作筛选器可在操作方法运行之前或之后运行。

可以使用操作筛选器特性来标记任何操作方法或控制器。  如果特性标记控制器,则操作筛选器将应用于该控制器中的所有操作方法。 

有关使用特性的更多信息,请参见利用特性扩展元数据

 

 

 

posted @ 2012-12-25 15:31  真有意思  阅读(3512)  评论(8编辑  收藏  举报