欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

小白开学Asp.Net Core 《五》

程序员文章站 2022-04-09 15:49:45
小白开学Asp.Net Core《五》 —— 使用.Net Core MVC Filter 一、简介 今天在项目(https://github.com/AjuPrince/Aju.Carefree)做登陆权限时,用到了Filter,现将Filer的使用做以下记录。 二、Filter 简介 Filte ......

小白开学asp.net core《五》

                              —— 使用.net core mvc filter

 

一、简介

  今天在项目(https://github.com/ajuprince/aju.carefree)做登陆权限时,用到了filter,现将filer的使用做以下记录。

二、filter 简介

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

                         小白开学Asp.Net Core 《五》

三、filter的执行顺序

  authorization filter ->  resource filter -> action filter -> exception filter -> result filter

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

              小白开学Asp.Net Core 《五》

    (图片来自 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管道中的交互方式

    小白开学Asp.Net Core 《五》

五、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();
        }
    }
  • 使用:

        小白开学Asp.Net Core 《五》

七、项目案例(全局)

  • filter定义

  小白开学Asp.Net Core 《五》

  • 注册

     小白开学Asp.Net Core 《五》