在开发过程中,我们想要对请求进行另外一些逻辑处理并且需要自定义逻辑的时候。MVC天然支持AOP切面这种特性
并且为我们提供了ActionFilterAttribute过滤的关键字。我们可以用这个自定义类做一些权限控制什么的。
ActionFilterAttribute类有以下的方法可以重写:
- OnActionExecuting – 在controller action执行之前调用
- OnActionExecuted – 在controller action执行之后调用
- OnResultExecuting – 在controller action result执行之前调用
- OnResultExecuted – 在controller action result执行之后调用
我们可以重写这几个方法,做一个简单的权限控制。
1.定义一个
actionFilterAttribute类
public class actionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
{
//这里我获取控制器Action方法名称并且判断
//读取请求上下文中的Controller,Action,Id
string url = HttpContext.Current.Request.Url.ToString().ToLower();
string url = HttpContext.Current.Request.Url.ToString().ToLower();
string[] urlArray = url.Split('/');
int urlindex = Array.IndexOf(urlArray, “Good”);
if(urlindex == -1)
{
HttpContext.Current.Response.Write("Action名称不是GOOD!");
filterContext.Result = new EmptyResult();
return;
}
HttpContext.Current.Response.Write("Action是GOOD!");
return;
}
}
//控制器
public class GoodBoyController : Controller
{
{
[
actionFilter
]
public ActionResult Good()
{
return View();
}
}