小白开学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 《五》相关推荐

  1. 小白开学Asp.Net Core 《十》

    小白开学Asp.Net Core <十> - - Session.Cookie.Cache(老生常谈) 一.背景 在常谈Session和Cookie之前我们先来简单的了解下Http(可以说 ...

  2. 小白开学Asp.Net Core 《九》

    小白开学Asp.Net Core <九> - - 前端篇(不务正业) 在<小白开学Asp.Net Core 三>中使用了X-admin 2.x 和 Layui将管理后端的界面重 ...

  3. 小白开学Asp.Net Core 《八》

    小白开学Asp.Net Core <八> - - .Net Core 数据保护组件 1.背景 我在搞(https://github.com/AjuPrince/Aju.Carefree)这 ...

  4. 小白开学Asp.Net Core 《七》

    小白开学Asp.Net Core <七> - - 探究中间件(MiddleWare) 1.何为中间件? 中间件是组装到应用程序管道中以处理请求和响应的家伙,管道中的每个组件都要满足以下两个 ...

  5. 小白开学Asp.Net Core《四》 —— 使用AspectCore-Framework

    小白开学Asp.Net Core<四>                               -- 使用AspectCore-Framework 一.AspectCore-Frame ...

  6. 小白开学Asp.Net Core 《六》 —— 探究.Net Core 跨平台的奥秘

    1.写这篇文章的初衷 有好多朋友反馈看不懂我写的开源的一个练手项目(GitHub:https://github.com/AjuPrince/Aju.Carefree)也有好多人都希望我能写一些简单的入 ...

  7. 前端小白在asp.net core mvc中使用ECharts

    对于在浏览器中绘制图形图表,目前有较多的js类库可以使用,如:ChartJS,Flot,canvasjs等,但是今天介绍的主角为国产图表库,并在apache孵化,就是大名鼎鼎的echarts. 前方高 ...

  8. ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路

    一.前言  最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...

  9. 《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1

    <ASP.NET Core In Action>读书笔记系列五 ASP.NET Core 解决方案结构解析1 参考文章: (1)<ASP.NET Core In Action> ...

最新文章

  1. hazelcast 使用_使用Hazelcast发布和订阅
  2. AliOS Things 3.0应用笔记:摄像头配网 + 钉钉群通知 + 天气显示
  3. 利用Attribute扩展MVC的Title和Sitemap
  4. linux开机到登陆的流程图,1-描述linux开机到登陆界面的启动过程.docx
  5. java连接kafka接收不到数据_Kafka客户端无法接收消息
  6. 【资料整理】Eclipse快捷键
  7. 52_并发编程-线程-线程池
  8. 深度学习自学(八):人脸识别主要场景与算法实现
  9. codeforces 题解
  10. 秦殇千年轮回java游戏下载,智云稳定器如何拍旋转画面 使用稳定器拍摄画面方法...
  11. 弱水三千,只取一瓢饮 的意思
  12. 【书谷】一个免费赠送图书的好网站,推荐给书虫们
  13. 从「降维打击」谈「降维」
  14. No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
  15. 卸载后依然无法安装签名不一致的APP
  16. 微信投票1人1票php制作,微信投票怎么刷票,微信人工投票1毛一票
  17. 2.利用docker+雨巷云打造私有网盘之安装nextcloud14.0.13
  18. SDNU 1040.导弹拦截
  19. android 格式工厂,格式工厂app下载-格式工厂app安卓版下载[辅助工具]-华军软件园...
  20. jmeter-阶梯式性能指标监听

热门文章

  1. 黑客攻防:从入门到入狱_每日新闻摘要:游戏服务黑客被判入狱27个月
  2. 火狐web开发清楚缓存_如何使用Firefox的Web开发工具
  3. java swing列表数据加监听,【Java Swing公开课|Java监听列表项选择事件怎么用,看完这篇文章你一定就会了】- 环球网校...
  4. C#如何用正则表达式截取https和带端口的域名
  5. RabbitMQ+PHP 教程六(RPC)
  6. VS2015不能修改安装路径问题
  7. Helpdesk 流程
  8. Task.Factory.StartNew 和 Task.Run 到底有什么区别?
  9. 如何判断 .NET Core 应用程序是以管理员身份运行
  10. Dapr + .NET Core实战(三)状态管理