小白开学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 《八》
-
《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1
-
小白开学Asp.Net Core 《十》
-
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
-
学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面
-
使用Asp.Net Core MVC 开发项目实践[第五篇:缓存的使用]
-
小白开学Asp.Net Core 《六》
-
小白开学Asp.Net Core 《五》
-
ASP.NET CORE系列【五】webapi整理以及RESTful风格化
-
【ASP.NET CORE 项目实战(第五章)】Repository仓储 UnitofWork