AOP--Filter

157 阅读1分钟

面向切面编程AOP

Aspect Oriented Programming在不修改之前的代码为基础,可以动态的增加业

务逻辑:

如果可以在已经成型的程序中,如果可以动态在某些行为之前增加点内容;在

某些行为之后增加点内容-----之前已经开发好的内容保持不变;

ASP.NET Core中的AOP--Filter

AuthorizeAttribute 权限验证

IResourceFilter 资源缓存

a.IResourceFilter中的OnResourceExecuting

b.控制器的构造函数 - 实例化控制器

c.执行Action方法

d.IResourceFilter中的.OnResourceExecuted

IActionFilter 方法前后的记录

a.控制器的构造函数 - 实例化控制器

b.执行CustomActionFilterAttribute.OnActionExecuting

c.执行Action方法

d.CustomActionFilterAttribute.OnActionExecuted

IResultFilter 结果生成前后扩展

a.CustomResultFilterAttribute.OnResultExecuting

b.开始渲染生成视图内容

c.CustomResultFilterAttribute.OnResultExecuted

IAlwaysRun 响应结果的补充

ResourceFilter处理后,HttpContext.Result赋值,在后面来一个补充

IExceptionFilter 异常处理

如果同时使用他们的先后顺序为

a.验证权限,进入到Authorization

b.ResourceFilter 中的 - OnResourceExecuting

c.开始创建控制器实例

d.ActionFilter 中的 - OnActionExecuting

e.执行Action方法

f.ActionFilter 中的 - OnActionExecuted

g.ResultFilter 中的 - OnResultExecuting

h.AlwaysRunResultFilter 中的 - OnResultExecuting

i.渲染视图

j.AlwaysRunResultFilter 中的 - OnResultExecuted

k.ResultFilter 中的 - OnResultExecuted

l.ResourceFilter中的 - OnResourceExecuted