我们知道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 }
通过扩展我们可以通过自己的应用场景以及内容来完成我们所想要达到的目的。
| 名称 | 说明 | |
|---|---|---|
| Equals | 基础结构。Attribute。) | |
| Finalize | Object。) | |
| GetHashCode | Attribute。) | |
| GetType | Object。) | |
| IsDefaultAttribute | Attribute。) | |
| Match | Attribute。) | |
| MemberwiseClone | Object。) | |
| OnActionExecuted | 在执行操作方法后由 MVC 框架调用。 | |
| OnActionExecuting | 在执行操作方法之前由 MVC 框架调用。 | |
| OnResultExecuted | 在执行操作结果后由 MVC 框架调用。 | |
| OnResultExecuting | 在执行操作结果之前由 MVC 框架调用。 | |
| ToString | Object。) |
FilterAttribute 派生出来的操作筛选器始终在操作方法运行之前调用。
ActionFilterAttribute 类,这使操作筛选器可在操作方法运行之前或之后运行。
如果特性标记控制器,则操作筛选器将应用于该控制器中的所有操作方法。
利用特性扩展元数据。