【朝夕技术专刊】Core3.1WebApi_Filter详解

欢迎大家阅读《朝夕Net社区技术专刊》第4期

我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!

01

PART

CoreWebApi五大Filter


1. AuthorizeAttribute:权限Filter;
2.IResourceFilter资源Filte;
3.IExceptionFilter/IAsyncExceptionFilter异常Filter;
4.ActionFilterAttribute, IActionFilter, IAsyncActionFilter 行为Filter
5.ResultFilterAttribute, IResultFilter, IAsyncResultFilter 结果Filter

02

PART

CoreFilter比较于.AspNetMVCFilter:

Asp.Net MVC的Filter一共只有三个:ActionFilterAttribute/AuthorizeAttribute/ExceptionFilter,这三个Filter都是进入到Asp.NetMVC框架的Filter;

Core下的Filter新增了资源ResourceFilter;而且执行顺序也有所改变;同时Core环境因为已经全程支持了IOC容器;所以在Filter中也支持了传入参数;以下两个图比较Asp.NetMVCFilter和CoreWebApiFilter的区别:

Asp.NetMVCFilter:可联系助教老师(微信:ZhaoxiNet007)获取代码测试执行;

.NetCoreFilter

03

PART

CoreFilter执行顺序:

在事例代码中分别建立了:可联系助教老师(微信:ZhaoxiNet007)获取代码测试执行;

CustomActionFilterAttribute:

CustomAuthorizeAttribute:

CustomExceptionFilterAttribute:

CustomResourceFilterAttribute:

CustomResultFilterAttribute:

五个Filter;分别标记在FilterController控制器的ShowFilter方法;

此处没有注册CustomAuthorizeAttribute,权限部分在Core中做了大更新;后续出主题文档,此处仅注册CustomActionFilterAttribute、CustomExceptionFilterAttribute、CustomResourceFilterAttribute、CustomResultFilterAttribute,调试结果按照顺序如下图:

图1:测试请求Api:ShowFilter以后,先进入到CustomResourceFilterAttribute中的OnResourceExecuting方法;

图2:再进入到控制器构造函数;说明在构造控制器之前就进入到ResourceFilter中去了;

图3:再进入到CustomActionFilterAttribute中的OnActionExecuting方法;

图4:再进入到FilterControllerK控制器的ShowFilter方法;

图5:再进入到CustomActionFilterAttribute中的OnActionExecuted方法;

图6:再进入到CustomResourceFilterAttribute的OnResourceExecuted方法;

以上六张图详解了Core中的Filter执行顺序:是一个俄罗斯套娃。

关于Core中新增Filter的职责分析:

1. AuthorizationFilter权限Filter:此处虽未注册使用,但是他是最先执行的,并且没有进入到MVC内部;这是Core的大更新,也是大亮点。如果系统需要做授权,那在请求执行方法的时候,应该先判断权限,如果没有权限,后续的动作没有必要进行,更没有必要进入到MVC中去;直接就返回了;代码少走了“冤枉路”,这是一个提高性能的表现;此次文档中没有重于介绍哪几种授权方式,因为在Core中的授权比较复杂,后续有专题文档提供;可联系助教老师(微信:ZhaoxiNet007)获取;

2.ResourceFilter资源Filter,在授权执行后执行,有OnResourceExecuting方法,和OnResourceExecuted方法,此处适合做缓存;可能同学会疑问,如果做缓存在AuthorizationFilter权限Filter中也能实现呢;确实是可以的,不过框架是为了专人做专事,在授权成功以后,专门提供一个Filter来做缓存;

下期预告

【朝夕Net社区技术专刊】第5期:

Filter的各种注册方式,以及如何完成Filter的依赖注入

本期福利

如果看完本文让你有所收获,
别忘转发扩散,和更多人分享学习的快乐!
扫码关注公众号朝夕Net社区回复”第四期“
即可获取本期配套教学视频及课件!

往期内容:

1【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题---WebApi环境搭建运行发布部署篇

2【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题-Corre3.1WebApi配置集成日志/配置Swagger

3【朝夕技术专刊】WebApi部署多服务器配置Nginx负载均衡

《朝夕Net社区技术专刊》持续更新,欢迎扫码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统计学习方法 pdf_机器学习基础教材-《统计学习与数据分析介绍》免费pdf分享...

本书介绍本入门级统计教科书主要讲解发展和培养统计思维所需的基本概念和工具。它提供了描述性,归纳性和探索性的统计方法,并指导读者完成定量数据分析的过程。在实验科学和跨学科研究中,数据分析已成为任何科学研究的组成部分。诸如判断数据…

[蓝桥杯][2013年第四届真题]危险系数-dfs+图的遍历

题目描述 问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用。 地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。 我们来定义一个危险系数DF(x,y)&#xff…

selenium.common.exceptions.SessionNotCreatedException: Message: session not created全套解决方案

chromedriver版本不匹配 报错: selenium.common.exceptions.SessionNotCreatedException: Message: session not created selenium.common.exceptions.WebDriverException: Message: session not created: 原因: Chrome版本和ChromeDriver版本不一致…

.NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(上)...

18 | 日志框架:聊聊记日志的最佳姿势源码链接:https://github.com/witskeeper/geektime/tree/master/samples/LoggingSimpleDemo日志框架必要的包:1、Microsoft.Extensions.Logging2、Microsoft.Extensions.Logging.Console3、Microsoft.Exte…

python递归实现_Python-递归实现

#递归实现def calc(n):print(n)if n/2 >1:res calc(n/2)print(res:,res)print(N:,n)return ncalc(100)#斐波那契数列def func(arg1,arg2,stop)if arg1 0:print(arg1,arg2)arg3 arg1 arg2print(arg3)if arg3 < stop:func(arg2,arg3,stop)func(0,1,30)#算法基础之二分查…

[蓝桥杯][2013年第四届真题]核桃的数量-枚举(水题)

题目描述 小张是软件项目经理&#xff0c;他带领3个开发组。工期紧&#xff0c;今天都在加班呢。为鼓舞士气&#xff0c;小张打算给每个组发一袋核桃&#xff08;据传言能补脑&#xff09;。他的要求是&#xff1a; 各组的核桃数量必须相同各组内必须能平分核桃&#xff08;当…

python2字符串编码方式_一、基础部分-2.字符串编码

一、字符编码历史1. ASCII美国人搞了个ASCII码表&#xff0c;把123abcABC%$#(数字、字母、特殊符号) &#xff0c;全部用10进制的数字表示。例如数字65&#xff0c;代表着“A” &#xff0c;ASCII码表一共255个数字&#xff0c;基本代表米国常用英文和符号(其实127以后都不是太…

Python基本语法复习——嗯...貌似很久没写过博客了

文章目录引入包math库random库string列表元组装包、拆包字典类与继承json异常处理引入包 import random import math import jsonmath库 print(math.ceil(4.1)) print(math.floor(4.9)) print(math.fabs(-10)) print(math.sqrt(9)) print(math.exp(1))分别是&#xff1a;向上…

Istio 1.5 发布——拥抱变化,爱上单体

北京时间 2020 年 3 月 6 日凌晨&#xff0c;我们期待已久的 Istio 1.5 发布了&#xff0c;发布公告见 https://istio.io/news/releases/1.5.x/announcing-1.5/。由 ServiceMesher 社区组织翻译的 Istio 官方文档同时发布&#xff0c;见 https://istio.io/zh。Istio 1.5 是一个…

[蓝桥杯][历届试题]连号区间数

题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题&#xff1a; 在1~N的某个全排列中有多少个连号区间呢&#xff1f;这里所说的连号区间的定义是&#xff1a; 如果区间[L, R] 里的所有元素&#xff08;即此排列的第L个到第R个元素&#xff09;递增排序后能得到一个长度为…

hbuilderx怎么添加断点_【高考语文题库】高考一直提分提不上去该怎么办?同一卷高考押题语文答案,助你再提30分...

大树从来不是在温室里长成的&#xff0c;而是在风霜雪雨的洗礼中参天的……古语云&#xff1a;“工欲善其事&#xff0c;必先利其器。”俗话说&#xff1a;“磨刀不误砍材工。”用到学习上就是学习必须讲究学习方法&#xff0c;有了适合自己的有效学习方法必定会事半功倍。一个…

业务模块化打造单体和分布式部署同步支持方案

我在2019年中国.NET开发者峰会上为大家分享了我们的微服务电商安全工程实践&#xff0c;那次会议分享的高清录播已经上传到我的腾讯课堂&#xff0c;大家可以通过底部的小程序打开直接观看&#xff08;复习&#xff09;。在大会上跟大家提到&#xff0c;我们当时只有4个人的创业…

[蓝桥杯][基础练习VIP]FJ的字符串-递归

题目描述 FJ在沙盘上写了这样一些字符串&#xff1a; A1 “A” A2 “ABA” A3 “ABACABA” A4 “ABACABADABACABA” … … 你能找出其中的规律并写所有的数列AN吗&#xff1f; 输入 仅有一个数&#xff1a;N ≤ 26。 输出 请输出相应的字符串AN&#xff0c;以一个换行…

python编程加油_编程学习资料,中途加油站,c++/java/python/小程序/人工智能......等等等等...

资料仅供学习分享用&#xff0c;废话不多说&#xff0c;解压密码为&#xff1a;1024文件是切割压缩的&#xff0c;多个part的压缩包&#xff0c;大家需要先下载到本地在解压&#xff0c;直接百度云解压会提示压缩包损坏。------------------------------学习资料java&#xff1…

[蓝桥杯][算法提高VIP]开灯游戏-dfs

题目描述 有9盏灯与9个开关&#xff0c;编号都是1~9。 每个开关能控制若干盏灯&#xff0c;按下一次会改变其控制的灯的状态(亮的变成不亮&#xff0c;不亮变成亮的)。 具体如下&#xff1a; 第一个开关控制第二&#xff0c;第四盏灯&#xff1b; 第二个开关控制第一&#…

python爬虫百度贴吧代码大全_零基础写python爬虫之抓取百度贴吧代码分享

这里就不给大家废话了&#xff0c;直接上代码&#xff0c;代码的解释都在注释里面&#xff0c;看不懂的也别来问我&#xff0c;好好学学基础知识去&#xff01;# -*- coding: utf-8 -*-#---------------------------------------# 程序&#xff1a;百度贴吧爬虫# 版本&…

Asp.Net Core EndPoint 终结点路由工作原理解读

Asp.Net Core EndPoint 终点路由工作原理解读一、背景在本打算写一篇关于Identityserver4 的文章时候&#xff0c;却发现自己对EndPoint -终结点路由还不是很了解&#xff0c;故暂时先放弃了IdentityServer4 的研究和编写&#xff1b;所以才产生了今天这篇关于EndPoint (终结点…

[蓝桥杯][算法提高VIP]夺宝奇兵-dp

题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ”夺宝奇兵”从山下出发,到达山顶,如何选路才能得到最多的珠宝呢?在上图所示例子中,按照5-> 7-> 8-&g…

迁移到其他机器_有赞大数据离线集群迁移实战

‍‍点击关注“有赞coder”获取更多技术干货哦&#xff5e;作者&#xff1a;郭理想 & 任海潮部门&#xff1a;数据中台一、背景有赞是一家商家服务公司&#xff0c;向商家提供强大的基于社交网络的&#xff0c;全渠道经营的 SaaS 系统和一体化新零售解决方案。随着近年来社…

C# 客户端内存优化分析

背景概述C# 开发客户端系统的时候&#xff0c;.net 框架本身就比较消耗内存资源,特别是xp 这种老爷机内存配置不是很高的电脑上运行,所以就需要进行内存上的优化&#xff0c;才能流畅的在哪些低端电脑上运行. 想要对C# 开发的客户端内存优化需要了解以下几个概念。虚拟内存这里…