小白开学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

(本人坚信:学习是由浅到深的过程)

    不喜勿喷!谢谢!

  GitHub地址: https://github.com/AjuPrince/Aju.Carefree

小白开学Asp.Net Core 《五》的更多相关文章

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

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

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

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

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

    小白开学Asp.Net Core <六> —— 探究.Net Core 跨平台的奥秘 1.写这篇文章的初衷 有好多朋友反馈看不懂我写的开源的一个练手项目(GitHub:https://gi ...

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

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

  5. 小白开学Asp.Net Core《三》

    小白开学Asp.Net Core<三> ——界面 我胡汉三再次又回来了(距离上篇时间有点长),今天抽时间将最近对框架采用的后台界面做个记录 1.先上图 (图一) (图二) 2.界面说明 后 ...

  6. 小白开学Asp.Net Core《二》(补)

    小白开学Asp.Net Core<二>(补) ——数据仓储层(Repositroy).服务层(Service) -------------------------------------- ...

  7. 小白开学Asp.Net Core《二》

    小白开学Asp.Net Core<二> ——数据仓储层(Repositroy) 一.历史现象 在后端开发中,数据库操作是最频繁的,每一个开发人员都会接触,甚至不少开发人员每天的工作就是与数 ...

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

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

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

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

随机推荐

  1. react项目实践——(3)babel

    1. babel Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. (1)安装 npm install --save-dev babel-core babel-e ...

  2. 反编译 war 包成传统项目的方法

    需求 项目老大让外包做了官网,不甚满意,想自己搞搞,遂叫我反编译他们发过来的 war 包. 方法 第一步:解压 war 包其实就是 zip 压缩包,用 zip 解压. 第二步:反编译 查看 war 包 ...

  3. MVC 自定义路由规则

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mv ...

  4. 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)(使用OpenSSL的命令行)

    之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂 ...

  5. Rxjava 学习(一)

    Rxjava是什么? RxJava是由Netflix开发的响应式扩展(Reactive Extensions)的Java实现.引用MSDN上对它的定义,Reactive Extensions是这样一个 ...

  6. Apache Cordova介绍

    原文:Apache Cordova介绍 Apache Cordova是一套设备API,允许移动应用的开发者使用JavaScript来访问本地设备的功能,比如摄像头.加速计.它可以与UI框架(如jQue ...

  7. 深入理解Amazon Alexa Skill(二)

    理解skill调用 本节来更详细的讨论alexa是如何确定调用哪个skill的. 参考:https://developer.amazon.com/zh/docs/custom-skills/under ...

  8. VS点击调试卡住的问题解决方案(转载)

    本来今天好好的,不知道弄到了什么,调试不了了,一点击立马卡住,就一直在那转,就在网上找了找解决方案,下面给大家列出来几种可能会卡住的问题已经解决方案 1:加载调试符号引起的卡住 解决方案: 在“选项” ...

  9. EasyUI 实现编辑功能,给Combobox 赋值

    1: <input id="RequestType" name="RequestType" class="easyui-combobox&quo ...

  10. C#字符串类型

    C#字符串类型(string)是一种引用类型,是System.String的别名,表示Unicode字符串. 两种表示方法: 1.“C#” 直接用双引号括起来. 2.使用@,@“c:\test”,可以 ...