经验总结33--面向切面的过滤器

想做一个统一的验证机制,当调用方法的时候进行身份验证,再去运行相应的方法。

那么就想到使用过滤器,C#有面向切面的属性,直接在方法上使用一个属性就可以。

1、使用过滤器。

public class ValidateFilterAttribute : ActionFilterAttribute

{

public override void OnActionExecuting(ActionExecutingContext filterContext)

{

base.OnActionExecuting(filterContext);

}

public override void OnActionExecuted(ActionExecutedContext filterContext)

{

base.OnActionExecuted(filterContext);

}

}

2、在进入方法前进行验证。

public override void OnActionExecuting(ActionExecutingContext filterContext)

{

IDictionary<string, object> parameters = filterContext.ActionParameters;

bool result = ValidateSign(parameters);

if (!result)

{

JsonResult jresult = new JsonResult

{

Data = new { Result = false, Message = "安全验证失败!" }

};

jresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

filterContext.Result = jresult;

}

else

base.OnActionExecuting(filterContext);

}

3、当失败后,进行自己定义的跳转,正常则继续。

JsonResult jresult = new JsonResult

{

Data = new { Result = false, Message = "安全验证失败!" }

};

jresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

filterContext.Result = jresult;

失败后返回指定的json信息。

时间: 2024-10-28 14:30:25

经验总结33--面向切面的过滤器的相关文章

面向切面编程

面向切面编程 .Net的面向切面编程 .Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服务方法"切"为很多面,日志面.验证面.请求方式处理.接口业务实现等多个面,有一些面可以使用过滤器特性(FilterAttribute)进行编写,然后很方便和打上特性即可,对于一般的工程师,只需要专注实现接口业务实现. 在流行SOAP的年代,很少需要一个强悍的Client,而今天restful时代,.net也出了一个

Java实战之03Spring-03Spring的核心之AOP(Aspect Oriented Programming 面向切面编程)

三.Spring的核心之AOP(Aspect Oriented Programming 面向切面编程) 1.AOP概念及原理 1.1.什么是AOP OOP:Object Oriented Programming面向对象编程 AOP:Aspect Oriented Programming面向切面编程 1.2.代理 充分理解:间接 主要作用:拦截被代理对象执行的方法,同时对方法进行增强. 1.2.1.静态代理 特点:代理类是一个真实存在的类.装饰者模式就是静态代理的一种体现形式. 1.2.2.动态代

Python装饰器与面向切面编程

今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 1. 装饰器入门 1.1. 需求是怎么来的? 装饰器的定义很是抽象,我们来看一个小例子. 1 2 3 4 def foo():     print 'in foo()' foo() 这是一个很无聊的函数没错

spring面向切面aop拦截器

spring中有很多概念和名词,其中有一些名字不同,但是从功能上来看总感觉是那么的相似,比如过滤器.拦截器.aop等. 过滤器filter.spring mvc拦截器Interceptor .面向切面编程aop,实际上都具有一定的拦截作用,都是拦截住某一个面,然后进行一定的处理. 在这里主要想着手的是aop,至于他们的比较,我想等三个都一一了解完了再说,因此这里便不做过多的比较. 在我目前的项目实践中,只在一个地方手动显示的使用了aop,那便是日志管理中对部分重要操作的记录. 据我目前所知,ao

依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦(转good)

依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦.所谓横切关注点,即影响应用多处的功能,这些功能各个应用模块都需要,但又不是其主要关注点,常见的横切关注点有日志.事务和安全等. 将横切关注点抽离形成独立的类,即形成了切面.切面主要由切点和通知构成,通知定义了切面是什么,以及何时执行何种操作:切点定义了在何处执行通知定义的操作. http://ju.outofmemory.cn/entry/216839 引子: AOP(面向方面编程:Asp

使用Spring进行面向切面编程(AOP)

转载于http://www.blogjava.net/supercrsky/articles/174368.html 文章太长,写的很好,没看完,转过来慢慢理解,品味 简介 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足. 除了类(classes)以外,AOP提供了 切面.切面对关注点进行模块化,例如横切多个类型和对象的事务管理. (这些关注点术语通常称作 横切(crosscutting) 关注点.) Spring的一个关键的组件就是 AOP

Java面试--Spring技术要点--Spring AOP(面向切面编程)

33  Spring AOP的概念 面向切面的编程,是一种编程技术,是OOP(面向对象编程)的补充和完善.OOP的执行是一种从上往下的流程,并没有从左到右的关系.因此在OOP编程中,会有大量的重复代码.而AOP则是将这些与业务无关的重复代码抽取出来,然后再嵌入到业务代码当中.常见的应用有:权限管理.日志.事务管理等. 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行:二是采用静态织入的方式,引入特定的语法创建"方面"

Javascript aop(面向切面编程)之around(环绕)

Aop又叫面向切面编程,其中“通知”是切面的具体实现,分为before(前置通知).after(后置通知).around(环绕通知),用过spring的同学肯定对它非常熟悉,而在js中,AOP是一个被严重忽视的技术点.但是利用aop可以有效的改善js代码逻辑,比如前端框架dojo和yui3中AOP则被提升至自定义事件的一种内在机制,在源码中随处可见.得益于这种抽象使得dojo的自定义事件异常强大和灵活.dojo中aop的实现在dojo/aspect模块中,主要有三个方法:before.after

Spring.Net控制翻转、依赖注入、面向切面编程

Spring.Net快速入门:控制翻转.依赖注入.面向切面编程 Spring.Net主要功能: 1.IoC:控制翻转(Inversion of Control)  理解成抽象工厂翻转控制:就是创建对象的权利由开发人员自己控制New,转到了由容器来控制. 2.DI:依赖注入(Dependency Injection)依赖注入:就是在通过容器开创建对象的时候,在对象的初始化是可以给一些属性.构造方法的参数等注入默认值(可以是复杂的类型). 3.AOP:面向切面编程  (类似:管道.MVC过滤器等)