小白开学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
小白开学Asp.Net Core 《五》相关推荐
- 小白开学Asp.Net Core 《十》
小白开学Asp.Net Core <十> - - Session.Cookie.Cache(老生常谈) 一.背景 在常谈Session和Cookie之前我们先来简单的了解下Http(可以说 ...
- 小白开学Asp.Net Core 《九》
小白开学Asp.Net Core <九> - - 前端篇(不务正业) 在<小白开学Asp.Net Core 三>中使用了X-admin 2.x 和 Layui将管理后端的界面重 ...
- 小白开学Asp.Net Core 《八》
小白开学Asp.Net Core <八> - - .Net Core 数据保护组件 1.背景 我在搞(https://github.com/AjuPrince/Aju.Carefree)这 ...
- 小白开学Asp.Net Core 《七》
小白开学Asp.Net Core <七> - - 探究中间件(MiddleWare) 1.何为中间件? 中间件是组装到应用程序管道中以处理请求和响应的家伙,管道中的每个组件都要满足以下两个 ...
- 小白开学Asp.Net Core《四》 —— 使用AspectCore-Framework
小白开学Asp.Net Core<四> -- 使用AspectCore-Framework 一.AspectCore-Frame ...
- 小白开学Asp.Net Core 《六》 —— 探究.Net Core 跨平台的奥秘
1.写这篇文章的初衷 有好多朋友反馈看不懂我写的开源的一个练手项目(GitHub:https://github.com/AjuPrince/Aju.Carefree)也有好多人都希望我能写一些简单的入 ...
- 前端小白在asp.net core mvc中使用ECharts
对于在浏览器中绘制图形图表,目前有较多的js类库可以使用,如:ChartJS,Flot,canvasjs等,但是今天介绍的主角为国产图表库,并在apache孵化,就是大名鼎鼎的echarts. 前方高 ...
- ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
一.前言 最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...
- 《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1
<ASP.NET Core In Action>读书笔记系列五 ASP.NET Core 解决方案结构解析1 参考文章: (1)<ASP.NET Core In Action> ...
最新文章
- hazelcast 使用_使用Hazelcast发布和订阅
- AliOS Things 3.0应用笔记:摄像头配网 + 钉钉群通知 + 天气显示
- 利用Attribute扩展MVC的Title和Sitemap
- linux开机到登陆的流程图,1-描述linux开机到登陆界面的启动过程.docx
- java连接kafka接收不到数据_Kafka客户端无法接收消息
- 【资料整理】Eclipse快捷键
- 52_并发编程-线程-线程池
- 深度学习自学(八):人脸识别主要场景与算法实现
- codeforces 题解
- 秦殇千年轮回java游戏下载,智云稳定器如何拍旋转画面 使用稳定器拍摄画面方法...
- 弱水三千,只取一瓢饮 的意思
- 【书谷】一个免费赠送图书的好网站,推荐给书虫们
- 从「降维打击」谈「降维」
- No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
- 卸载后依然无法安装签名不一致的APP
- 微信投票1人1票php制作,微信投票怎么刷票,微信人工投票1毛一票
- 2.利用docker+雨巷云打造私有网盘之安装nextcloud14.0.13
- SDNU 1040.导弹拦截
- android 格式工厂,格式工厂app下载-格式工厂app安卓版下载[辅助工具]-华军软件园...
- jmeter-阶梯式性能指标监听
热门文章
- 黑客攻防:从入门到入狱_每日新闻摘要:游戏服务黑客被判入狱27个月
- 火狐web开发清楚缓存_如何使用Firefox的Web开发工具
- java swing列表数据加监听,【Java Swing公开课|Java监听列表项选择事件怎么用,看完这篇文章你一定就会了】- 环球网校...
- C#如何用正则表达式截取https和带端口的域名
- RabbitMQ+PHP 教程六(RPC)
- VS2015不能修改安装路径问题
- Helpdesk 流程
- Task.Factory.StartNew 和 Task.Run 到底有什么区别?
- 如何判断 .NET Core 应用程序是以管理员身份运行
- Dapr + .NET Core实战(三)状态管理