• ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器



    在MVC的请求管道 并不是  asp.net core的请求管道。所以说Filter是专用于MVC的
    贯穿特性,横穿关注点。比如授权、日志


    这里的Authorize其实就是一个Filter,主要用来授权的


    比如这个Filter,我们要求必须使用Https才可以访问






    授权在整个管道的最前面
    action过滤器是在Action被调用之前和之后,这个时候ModelBing已经发生了。绑定完之后就可以操纵这些参数了。
    Rsult:在Action的IActionResult之前和之后,通过它可以控制结果的执行,也可以短路结果的执行



    对应的五种类型有物种的子接口


    新建一个Filter的文件夹

    LogAsyncResourceFilter 这个过滤器主要用来做日志

    F12 看一下IResourceFilter这个接口的源码,接口就是实现的IFilterMetadata这个接口。

    所以我们只需要实现IResourceFilter 就可以了。实现接口的两个方法

    OnResourceExecuting是在授权过滤器之后,参数上下文包含了httpContext还有路由的一些细节。以及当前这个Action的信息。
    因为这个Filter可以作用于Action
     

    OnResourceExecuted:MVC管道剩余部门执行完后,才会执行。参数Context和上面不一样,比如说还返回了ActionResult的信息
    

    异步版本

    它有个参数是Delegate委托next里面包装着整个MVC剩余的管道


    执行next方法 就是执行下一步的操作。这样就和同步的版本对应上了




    所有的管道过滤器调用完成之后调用最后这句

    尽量还是使用同步的版本

    应用Filter




    还需要继承Attribute

    异步的也需要继承



    运行页面查看控制台:



    应用Controller级别


    打开默认页面后,再访问以下Privacy这个页面


    先注释掉

    使用全局
    两种方式

    第三种:


    视频作者习惯于最后一种


    执行顺序


  • 相关阅读:
    Linux如何编译安装源码包软件
    安装python发行版本,并用conda来管理Environments,Python,packages
    命令远程传输文件
    CentOS7更换yum源为阿里云镜像源
    CentOS安装pip并修改源为豆瓣源
    查看SELinux状态及关闭SELinux
    解决CentOS查询不到ip
    chmod变更文件或目录的权限
    开启HTML5之旅。。。
    JDK 动态代理的实现
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/10946790.html
Copyright © 2020-2023  润新知