MVC5教学之过滤器(上)
(Controller)和对应的行为方法(on)去处理,那么如果我们想要在Action处理的前后加上一些额外的处理逻辑怎么办呢?这时候就用到了过滤器(Fil)。
在ASP.NET MVC的请求处理过程中有19个管道事件,这些事件分布在请求处理的各个节点中,比如BeginRequest(开始处理请求时触发)、AuthenticateRequest(对请求进行身份验证时触发)、AuthorizeRequest(对请求进程授权时触发)…等等等等。而过滤器的主要作用就是将我们的附加逻辑注入到这些请求处理管道中。
在实际业务中,在Action方法前后添加额外附加逻辑的情况有很多,过滤器就是用来完成此功能。通过过滤器可以将与业务逻辑无关但经常需要执行的代码分离开,使我们的代码逻辑性更加清晰,代码更加简洁。
MVC给我们提供了四种过滤器,基本满足了我们实际业务中常用的需求,包括以下:
除以上接口之外,我们还要用到FilterAttribute类,这个类将我们的过滤器包装成了特性,使我们的过滤器可以方便的在Action方法上方使用。
所有实现了IAuthorizationFilter接口的都可以称之为授权过滤器。它的接口定义如下:
授权过滤器是最先运行的过滤器,它运行在其它过滤器和Action方法之前。客户端请求在调用Action之前,MVC框架会检测Action上是否有授权过滤器,如果有会调用OnAuthorization方法,如果此方法批准了请求,才会调用相应的Action。流程如图:
由于使用的是MVC自带的授权验证方法,未能符合它的验证机制,所以无权限查看。通常我们需要添加一个新的派生自AuthorizeAttribute类的授权过滤器来完成我们自己业务逻辑。
下面我们自定义一个授权过滤器。我们在MVC项目中添加一个Filters文件夹,我们所有自定义的过滤器都放可以到这个文件夹下,便于管理。
可以看到,我们只要重写AuthorizeCore方法就可以根据我们的业务需求判断是否有权限访问,返回值为true允许访问,返回值为false禁止访问。
可以看到,当About页面没有user参数时,会提示无权限,有user参数则可以访问通过。
在实际业务中我们可以使用授权过滤器来管理用户登录状态的授权验证。当然,我的这个例子只是基础的用法,实际业务比这复杂的多,那么就需要我们自己去思考设计授权过滤器方法了。
我们看到该接口里有两个方球速体育官方入口法OnActionExecuting和OnActionExecuted,前者在动作方法执行前调用,后者在动作方法执行后调用。
OnActionExecuting方法是在Action方法执行前调用的,那么我们可以利用这个方法来检测请求,并且可以在这里修改请求,取消请求等等操作。
您可能感兴趣的文章
- 10-26ASP NET中使用AJAX的教程
- 10-26ASPNET 40从入门到精通教程
- 10-26ASPNET程序设计教程(第讲)ppt
- 10-26ASP NET 40 基础教程(C)第一章 ASP NET 40开发基础
- 10-26ASPNET程序设计教程-ASPNET初步ppt
- 10-24asp网站空间
- 10-24微软OpenAI API终止!
- 10-24ASP NET 40 基础教程(C)第八章 ADO NET 数据库编程
- 10-24一款软件开发框架—NET——APP开发直播软件体育APP
- 10-23微软 Build 2021 汇总:普通人也能编程的 GPT-3、Windows 十年重磅更新
阅读排行
推荐教程
- 09-04AMD 5800X3D平台遭殃!微软Win11系统再现大Bug
- 06-26永不过时的时装界高级色系 - 经典黑白灰
- 08-06工作中必备的12个Git命令
- 10-21微软全新 Surface Laptop 第 7 版 Pro 第 11 版上手
- 09-04什么是ASP?
- 09-02教程 - 自强学堂
- 09-28颜值与性能并存!Surface Laptop笔记本评测
- 08-267 后端框架:一句话启动
- 09-07aspnet基础教程2963241950
- 08-06杀疯了!微软:比NET7超级快更快!