Asp.Net MVC过滤器

在MVC中有如下过滤器

1.AuthorizeAttribute

2.ActionFilterAttribute

3.HandleErrorAttribute

一、首先介绍AuthorizeAttribute,这个就是授权过滤器

1.创建一个类,继承AuthorizeAttribute

2.重写OnAuthorization方法,在方法里面可以验证权限,如Session和Cookie

3.添加标记到方法或类上,如果在方法上添加特性,那么会在添加特性的方法执行前调用OnAuthorization方法。

如果在类上添加特性,那么在执行类中的所有方法前都会调用OnAuthorization方法。

如果要在所有控制器类的方法上都调用OnAuthorization方法,则在App_Start下的FilterConfig类下的RegisterGlobalFilters方法里面添加注册。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace 过滤器
 8 {
 9     public class MyAuthorizeAttribute : AuthorizeAttribute
10     {
11         public override void OnAuthorization(AuthorizationContext filterContext)
12         {
13             //在此可以验证权限,如验证Session和Cookie
14             //可以用filterContext.HttpContext.Session["Key"] 获取Session
15             base.OnAuthorization(filterContext);
16         }
17     }
18 }  

二、ActionFilterAttribute使用跟AuthorizeAttribute类似,执行Action前后和执行View前后过滤器

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace 过滤器
 8 {
 9     public class MyActionFilterAttribute: ActionFilterAttribute
10     {
11         //加载Action前调用
12         public override void OnActionExecuting(ActionExecutingContext filterContext)
13         {
14             //在此也可以进行权限的验证
15             base.OnActionExecuting(filterContext);
16         }
17         //加载Action后调用
18         public override void OnActionExecuted(ActionExecutedContext filterContext)
19         {
20             base.OnActionExecuted(filterContext);
21         }
22         //加载View前调用
23         public override void OnResultExecuting(ResultExecutingContext filterContext)
24         {
25             base.OnResultExecuting(filterContext);
26         }
27         //加载View后调用
28         public override void OnResultExecuted(ResultExecutedContext filterContext)
29         {
30             base.OnResultExecuted(filterContext);
31         }
32     }
33 }  

三、HandleErrorAttribute使用跟上面两个类似,异常处理过滤器

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6
 7 namespace 过滤器
 8 {
 9     public class MyHandleErrorAttribute: HandleErrorAttribute
10     {
11         public override void OnException(ExceptionContext filterContext)
12         {
13             Exception ex = filterContext.Exception;  //获取异常
14             //在此可以把异常记录到日志里
15             //跳转到友好页面,避免把错误页显示给用户
16             filterContext.HttpContext.Response.Redirect("/err.html");
17             base.OnException(filterContext);
18         }
19     }
20 } 

过滤器执行顺序:授权验证过滤器——执行Action前后过滤器——加载View前后过滤器

时间: 2024-10-14 22:45:55

Asp.Net MVC过滤器的相关文章

ASP.NET MVC 过滤器说明

ASP.NET MVC 过滤器分别如下: 过滤器执行顺序:  

ASP.NET MVC 过滤器(三)

ASP.NET MVC 过滤器(三) 前言 本篇讲解行为过滤器的执行过程,过滤器实现.使用方式有AOP的意思,可以通过学习了解过滤器在框架中的执行过程从而获得一些AOP方面的知识(在顺序执行的过程中,这种编程模式就是横向的插入点),言归正传,我们还是以学习过滤器为主.对于IAuthorizationFilter授权认证过滤器的使用篇幅,我知道怎么用但是写不出来,里面包含知识点很多,功底尚浅写了一半又给删掉了,宁愿不发也不能坑人,在后面的学习中假使我可以掌握了,一定会及时的写出来跟大家分享.这个目

ASP.NET MVC 过滤器(一)

ASP.NET MVC 过滤器(一) 前言 前面的篇幅中,了解到了控制器的生成的过程以及在生成的过程中的各种注入点,按照常理来说篇幅应该到了讲解控制器内部的执行过程以及模型绑定.验证这些知识了.但是呢,在MVC框架中提供了一种机制在控制器方法执行之前我们还可以通过这种机制来做一些横向切面的操作,这种机制的实现就是过滤器了,在本篇和后续的篇幅中将会对几种过滤器做一番讲解,并且会对过滤器在框架中的一个执行过程进行粗略的讲解. ASP.NET MVC过滤器 过滤器在系统框架中的整体对象模型 IAuth

ASP.NET MVC 过滤器(四)

ASP.NET MVC 过滤器(四) 前言 前一篇对IActionFilter方法执行过滤器在框架中的执行过程做了大概的描述,本篇将会对IActionFilter类型的过滤器使用来做一些介绍. ASP.NET MVC过滤器 过滤器在系统框架中的整体对象模型 IAuthorizationFilter授权认证过滤器的执行过程 使用IAuthorizationFilter过滤器 IActionFilter行为过滤器的执行过程 自定义实现IActionFilter行为过滤器 异常过滤器的使用 自定义实现

ASP.NET MVC 过滤器开发与使用

文章来源:http://www.cnblogs.com/JinvidLiang/p/4660200.html(感谢) ASP.NET MVC 过滤器开发与使用 ASP.NET MVC 中给我们提供了内置的过滤器,通过过滤器,我们可以在控制器内的方法前后,添加必须的业务逻辑,如权限验证,身份验证,错误处理等. 今天,我们主要介绍3个过滤器:OutputCacheAttribute,AuthorizeAttribute,HandleErrorAttribute. 我们会根据这三个内置过滤器,分别举不

ASP.NET MVC 过滤器(五)

ASP.NET MVC 过滤器(五) 前言 上篇对了行为过滤器的使用做了讲解,如果在控制器行为的执行中遇到了异常怎么办呢?没关系,还好框架给我们提供了异常过滤器,在本篇中将会对异常过滤器的使用做一个大概的讲解. ASP.NET MVC过滤器 过滤器在系统框架中的整体对象模型 IAuthorizationFilter授权认证过滤器的执行过程 使用IAuthorizationFilter过滤器 IActionFilter行为过滤器的执行过程 自定义实现IActionFilter行为过滤器 异常过滤器

ASP.NET MVC过滤器(一)

MVC过滤器是加在 Controller 或 Action 上的一种 Attribute,通过过滤器,MVC 网站在处理用户请求时,可以处理一些附加的操作,如:用户权限验证.系统日志.异常处理.缓存等.MVC 中包含Authorization filter.Action filter.Result filter.Exception filter 四种过滤器. APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这

[转]ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)

用途:防止CSRF(跨网站请求伪造). 用法:在View->Form表单中:<%:Html.AntiForgeryToken()%> 在Controller->Action动作上:[ValidateAntiForgeryToken] 原理: 1.<%:Html.AntiForgeryToken()%>这个方法会生成一个隐藏域:<inputname="__RequestVerificationToken" type="hidden&qu

ASP.NET MVC过滤器中权限过滤器ValidateAntiForgeryToken的用法(Post-Only)

用途:防止CSRF(跨网站请求伪造). 用法:在View->Form表单中:<%:Html.AntiForgeryToken()%> 在Controller->Action动作上:[ValidateAntiForgeryToken] 原理: 1.<%:Html.AntiForgeryToken()%>这个方法会生成一个隐藏域:<inputname="__RequestVerificationToken" type="hidden&qu