Asp.net mvc基础(十二)过滤器Filter

AOP(面向切面编程)是一种架构思想,用于把公共的逻辑放到一个单独的地方,这样就不用每个地方都写重复的代码了。相当于:一夫当关,万夫莫开

在Asp.net mvc中提供了四种过滤器接口实现了这种AOP机制,分别是:IAuthorizationFilter,IActionFilter,IResultFilter,IExceptionFilter

 

注意:每次执行Action方法的时候,都会执行过滤器

1.IAuthorizationFilter

场景:一般用来检查当前用户是否有Action的执行权限,在每个Action被执行前执行OnAuthorization方法

使用方法:

1.创建一个实现IAuthorizationFilter接口的类

2.添加类到Global.asax中

参考案例:登录系统

 

filterContext.ActionDescriptor.ActionName 获取要执行的Action的名字。

filterContext.ActionDescriptor.ControllerDescriptor.ControllerName 获取要执行的Controller的名字。

filterContext.Result如果赋值了,那么就不会再执行Action了,而是以"filterContext.Result"的值作为执行结果。

filterContext.HttpContext.Response.Redirect("地址"); 和filterContext.Result不同,这句执行完,还是会执行Action方法的。

在过滤器中推荐使用:filterContext.Result = new RedirectResult("路径");

2.IActionFilter

IActionFilter也是在每个Action被执行前执行OnActionExecuting方法,每个Action执行完毕后再执行OnActionExecuted方法。和IAuthorizationFilter的区别是IAuthorizationFilter再IActionFilter之前执行。

3.IResultFilter

IResultFilter是在每个ActionResult的前后执行IResultFilter。

4.IExceptionFilter

当Action执行发生未处理异常的时候执行OnException方法

获取异常代码:Exception ex=filterContext.Exception

总结:只需要编写一次,在其他地方就可以执行了。

 

 

 

 

posted @ 2021-06-21 22:18  冯继强fjq  阅读(353)  评论(0编辑  收藏  举报