(五).NET Core中过滤器Filter的使用介绍

知识点回顾:编程

前面几篇文章分别给你们介绍了app

(1)Swagger的集成和用法;框架

(2)JWT身份验证的集成和用法;ide

(3)OOM框架AnutoMapper对象映射的用法;spa

今天给你们介绍过滤器Filter的基本使用:设计

过滤器有什么做用,在什么场景下适合用到它?日志

假设一个项目进展到快结束的时候,项目leader为了保证程序的稳定性和可监控和维护性要求将全部的方法加上日志,若是项目比较庞大,方法很是多,那岂不是得费很大得劲来完成这样一件事情。不过不用担忧,咋们遇到的问题,伟大的语言设计者早已帮咱们想好了解决办法过滤器,过滤器是一种AOP(面向切面编程)技术的体现,AOP具备松耦合,易扩展,代码可复用的特色。code

一般咱们在这些场景下如身份验证、日志记录、异常获取等会使用到过滤器对象

.NET Core中的过滤器生命周期:blog

1.png

.NET Core中的过滤器有多种,今天给你们主要介绍ActionFilterAttribute的用法

(1)自定义一个Filter类:

` public class LogFilter: ActionFilterAttribute

{

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
        /* todo OnActionExecuting */
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        /* todo OnActionExecuted */
    }

    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        base.OnResultExecuting(filterContext);
        /* todo OnResultExecuting */
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        base.OnResultExecuted(filterContext);
        /* todo OnResultExecuted */
    }

}`

(2)注册过滤器,注册过滤器有两种方式,一种是全局注册,另外一种是局部注册:
services.AddMvc(option => { option.Filters.Add(typeof(LogFilter)); }) //全局注册过滤器

局部注册,局部注册能够体如今类或方法上:
2.png

(3)运行,请求一个具体接口,跟踪一下执行顺序:

3.png4.png

能够看到过滤器起到了对应的做用。

相关文章
相关标签/搜索