zoukankan      html  css  js  c++  java
  • 小白开学Asp.Net Core 《五》

    小白开学Asp.Net Core《五》

                                  —— 使用.Net Core MVC Filter

    一、简介

      今天在项目(https://github.com/AjuPrince/Aju.Carefree)做登陆权限时,用到了Filter,现将Filer的使用做以下记录。

    二、Filter 简介

      Filter俗称过滤器,它的作用是在Action方法执行前后做一些处理。它在Mvc Action 管道中运行,所以也可以叫做过滤器管道。

                             

    三、Filter的执行顺序

      Authorization Filter ->  Resource Filter -> Action Filter -> Exception Filter -> Result Filter

      在.Net Core MVC 中新增了异步过滤器,如果提供了异步和同步过滤器,那么将执行异步过滤器,同步过滤器将不会执行。 

                  

        (图片来自 John Wu 的博客

    • Authorization Filter

       Authorization Filter  是这几种Filter中优先级最高的,通常用于验证请求的合法性,俗称 授权过滤器。

    • Resource Filter

       Resource Filter 是第二个被执行的,Model Binding之前执行,通常用于对Model加工处理,俗称 资源过滤器

    • Action Filter 

       Action Filter 这个过滤器是最常用到的过滤器,在调用Action方法前后执行,在Model Binding之后执行,在使用上没什么特别注意的,俗称 方法过滤器

    • Exception Filter

       Exception Filter 常常用于应用程序执行异常是记录日志

    • Result Filter

      Result Filter 当Action 执行完成后,最终会执行的Filter,常常用于处理 Action 执行结果

     四、Filter类型在Filter管道中的交互方式

        

    五、Filter 的注册

      Filter 的注册有两种方式,一种是全局注册,另一种的区域注册

    • 全局注册是在Startup.cs 中进行注册。注册后用于所有的Request
    • 区域注册是在Controller或者Action 上面加上[TypeFilter(type)]

    六、项目案例(区域)

    • 定义ActionFilter:

    public class HandleLoginAsyncAttribute : IAsyncActionFilter
        {
            public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
            {
                context.HttpContext.Session.TryGetValue("Aju_Prince_OperatorProvider_20190708", out var result);
                if (result == null)
                {
                    context.Result = new RedirectResult("/Login/Index");
                    return;
                }
                await next.Invoke();
            }
        }
    • 使用:

            

    七、项目案例(全局)

    • Filter定义

      

    • 注册

         

    参考:

      ASP.NET Core Filters

      ASP.NET Core 教學 - Filters

    (本人坚信:学习是由浅到深的过程)

        不喜勿喷!谢谢!

      GitHub地址: https://github.com/AjuPrince/Aju.Carefree

  • 相关阅读:
    测试平台系列(38) 接入github第三方登录(上)
    测试平台系列(37) 运用装饰器给用例加上执行日志
    测试平台系列(36) 使用全局变量
    测试平台系列(35) 编写全局变量管理页面
    OCP 063中文考试题库(cuug内部资料)第16题
    OCP 063中文考试题库(cuug内部资料)第15题
    D. Strange Housing 题解(思维+染色)
    B. Strange Definition 题解(质因子分解+思维)
    F. Euclid's nightmare 题解(MST+思维)
    D. Fragmentation merging 题解(思维)
  • 原文地址:https://www.cnblogs.com/haoxiaozhang/p/11152628.html
Copyright © 2011-2022 走看看