MVC4 4种Filter
1. AuthorizationFilter: 从命名上看这个用于完成授权相关的工作。
AuthorizationFilter 实现了 IAuthorizationFilter 接口, 如果我们希望执行Action之前做点什么 就用这个AuthorizationFilter 来实现。
IAuthorizationFilter 接口提供了 OnAuthorization 方法来执行授权操作。
1.1 AuthorizeAttribute:
[Authorize(Users = "Foo")]
[Authorize(Roles = "Bar")]
public ActionResult Index()
{
return View();
}
1.2 RequitreHttpsAttribute: 从名称看可以知道 要求请求用户总是以Https 请求的方式访问目标Action。
1.3 ValidateInputAttribute: ValidateInput用于验证请求的输入。
2. ActionFilter: ActionFilter 实现了接口IActionFilter ,ActionFilter 是在我们执行Action 前后执行一些额外的操作。
IActionFilter 具有如下两个方法。 它们分别在Action 执行前后被执行。
我们可从 ActionExecutedContext 和 ActionExecutingContext 两个上下文对象中获取当前Action的参数列表。
public interface IActionFilter
{
void OnActionExecuted(ActionExecutedContext filterContext); void OnActionExecuting(ActionExecutingContext filterContext);
}
2.1 ActionFilter 的执行机制:当ActionInvoker在执行Action 的时候会根据Order和Scope属性对ActionFilter 进行排序。然后根据当前ControllerContext 和ActionDescripor 创建一个ActionExecutingContext对象,最后将其作为参数依次调用所有的ActionFitler的OnActionExecuting方法。
ActionFilter的OnActionExecuting执行完毕后再执行Action方法,
ActionFilter的ActionExecuted则是在Action执行完毕后再 执行。
2.2 ActionFilter中的异常处理:
如果ActionFilter链的第一个ActionFilter 在执行OnActionExecuting和ActionExecuted 方法过程中出现异常,那么这个异常会被直接抛出,不过不是第一个
ActionFilter,抛出异常会被捕获。
3 ExceptionFilter: 异常处理筛选器。
IExceptionFilter 具有唯一的方法OnException 用于异常处理
1. 执行的优先级 Order 和 Scope ,排在后面的优先级更。。
2. ExceptionContext 的 ExceptionHandled 设置ture 并不能阻止后续ExceptionFiter的执行。
3. 如果ExceptionFilter在执行OnException过程中出现异常,整个ExceptionFilter链的执行将立即停止,并且抛出异常。
public interface IExceptionFilter
{
void OnException(ExceptionContext filterContext);
}
4. EntLib 微软企业库 实现自动化异常处理。
5.ResultFilter:Action方法返回一个ActionResult对象。 IResultFilter 提供了OnResultExecuted和 OnResultExecuting 两个方法,
它们将在 ActionResult 执行前后被执行,如果Action 返回一个ActionResult对象,ActionInvoker在完成Action方法的执行后 会调用返回的ActionResult对象
的ExecuteResult方法实习对请求的响应。
public interface IResultFilter
{
void OnResultExecuted(ResultExecutedContext filterContext); void OnResultExecuting(ResultExecutingContext filterContext);
}
MVC4 4种Filter的更多相关文章
- 通过源码了解ASP.NET MVC 几种Filter的执行过程 在Winform中菜单动态添加“最近使用文件”
通过源码了解ASP.NET MVC 几种Filter的执行过程 一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神 ...
- ASP.NET Core五种Filter
Authorization Filter Authorization是五种Filter中优先级最高的,通常用于验证Request合不合法,不合法后面就直接跳过. 权限控制器过滤器,可以通过Authon ...
- 通过源码了解ASP.NET MVC 几种Filter的执行过程
一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神的工作,而且很多人觉得平时根本不需要知道这些,会用就行了.其实阅读源 ...
- ASP.NET MVC 几种 Filter 的执行过程源码解析
一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神的工作,而且很多 人觉得平时根本不需要知道这些,会用就行了.其实阅读 ...
- 几种filter的比较
需要整理 Gaussian filter https://en.wikipedia.org/wiki/Gaussian_filter Laplacian/Laplacian of Gaussian h ...
- [ASP.NET MVC 小牛之路]11 - Filter
Filter(筛选器)是基于AOP(面向方面编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑,以非常简单优美的方式实现横切关注点(Cross-cutting Concerns).横切关 ...
- Asp.Net MVC Filter 实现方式和作用范围控制
MVC中的Filte 简单又优雅的实现了AOP ,在日志,权限,缓存和异常处理等方面用的比较多.但本文不是讨论Filter这些功能点,而是总结Filter实现的方式.说实现也不太准确,也就是它的呈现方 ...
- HTMLParser使用详解(3)- 通过Filter访问内容
HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果.HTMLParser访问结果内容的方法有两种.使用Filter和使用Visitor. (一)Filter类顾名思义,Filter就 ...
- .net HTMLParser详细使用说明 强大的Filter类 解析HTML文档如此简单
背景: HTMLParser原本是一个在sourceforge上的一个Java开源项目,使用这个Java类库可以用来线性地或嵌套地解析HTML文本.他的 功能强大和开源等特性吸引了大量Web信息提取的 ...
随机推荐
- Django学习---ajax
Ajax 应用场景:我们在输入表单进行提交的时候往往会判断输入的数据形式是否正确,这个时候如果我们点击了提交就会刷新页面.如果我们不想要它刷新页面,让它“悄悄的提交数据”,这个时候我们就需要使用aja ...
- C# 设计模式-单例模式(Singleton)
所谓单例模式即所谓的一个类只能有一个实例,说白了,也就是类只能在内部实例一次,然后提供这一实例,外部无法对此类实例化. 单例模式的特点: 1.只能有一个实例: 2.只能自己创建自己的唯一实例: 3.必 ...
- 分环境部署SpringBoot日志logback-spring.xml
springboot按照profile进行打印日志 log4j logback slf4j区别? 首先谈到日志,我们可能听过log4j logback slf4j这三个名词,那么它们之间的关系是怎么样 ...
- arcserver 跨域问题
http://resources.arcgis.com/en/help/rest/apiref/config.html#jcrossOriginAccesshttp://enable-cors.org ...
- java aop 日志打印 正则设置
package tz.lion.Utils.aop; import com.alibaba.fastjson.JSON;import org.springframework.web.multipart ...
- sql解决主键冲突
在数据插入的时候,假设主键对应的值已经存在,则插入失败!这就是主键冲突.当主键存在冲突(duplicate key)的时候,可以选择性的进行处理,即忽略.更新或者替换. 1.忽略 insert ign ...
- Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器
1. 规划 域名 解析IP Nginx代理 htpps://www.devcult.com 47.88.10.155 htpps://auto.devcult.com 47.88.10.155 ...
- nyoj27-水池数目 (求连通块数目)【dfs】
http://acm.nyist.net/JudgeOnline/problem.php?pid=27 水池数目 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 南阳 ...
- php魔术方法__SET __GET
__SET 设置一个不可访问的属性的时候 调用_set方法 __GET 获取一个不可访问的属性的时候 调用_get 方法 <?php class stu{ private $a; priva ...
- IDEA06 代码规范检测插件之Alibaba Java Coding Guidelines
1 官方资料 1.1 官方介绍 https://mp.weixin.qq.com/s/IbibsXlWHlM59kfXJqRvZA#rd 1.2 github地址 https://github.com ...