放牛班的春天qvod,山东张辉,卡巴拉岛透视镜
今天在项目(https://github.com/ajuprince/aju.carefree)做登陆权限时,用到了filter,现将filer的使用做以下记录。
filter俗称过滤器,它的作用是在action方法执行前后做一些处理。它在mvc action 管道中运行,所以也可以叫做过滤器管道。
authorization filter -> resource filter -> action filter -> exception filter -> result filter
在.net core mvc 中新增了异步过滤器,如果提供了异步和同步过滤器,那么将执行异步过滤器,同步过滤器将不会执行。
(图片来自 john wu 的博客)
authorization filter 是这几种filter中优先级最高的,通常用于验证请求的合法性,俗称 授权过滤器。
resource filter 是第二个被执行的,model binding之前执行,通常用于对model加工处理,俗称 资源过滤器
action filter 这个过滤器是最常用到的过滤器,在调用action方法前后执行,在model binding之后执行,在使用上没什么特别注意的,俗称 方法过滤器
exception filter 常常用于应用程序执行异常是记录日志
result filter 当action 执行完成后,最终会执行的filter,常常用于处理 action 执行结果
filter 的注册有两种方式,一种是全局注册,另一种的区域注册
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(); } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论