ASP.NET MVC学习笔记-----Filter(1)
Filter类型 | 接口 | MVC的默认实现 | Description |
Authorization | IAuthorizationFilter | AuthorizeAttribute | 最先执行,在其他类型的filter和action方法前执行 |
Action | IActionFilter | ActionFilterAttribute | 在action方法执行前和执行后执行 |
Result | IResultFilter | ActionFilterAttribute | 在result执行前和执行后执行 |
Exception | IExceptionFilter | HandleErrorAttribute | 在抛出异常时执行,(异常发生在action/result/filter) |
public interface IAuthorzationFilter
{
void OnAuthorization(AuthorizationContext context);
}
public class AuthorizationContext : ControllerContext
{ public AuthorizationContext(); public AuthorizationContext(ControllerContext controllerContext, ActionDescriptor actionDescriptor);
public virtual ActionDescriptor ActionDescriptor { get; set; }
public ActionResult Result { get; set; } }
AuthorzationContext额外提供了Result属性和ActionDescriptor属性,result属性表示授权阶段呈现的ActionResult,而ActionDescriptor则包含了当前执行Action的信息。
Asp.net MVC给我们提供了一个IAuthorzationFilter的实现AuthorizeAttribute(没错,它是一个Attribute,继承于FilterAttribute),该Attribute可以应用于Controller和Action, 它包含Roles和Users属性,指定特定的角色和用户才可以授权使用。比如:
public class HomeController : Controller
{
[Authorize(Users = "zhang, zheng", Roles = "admin")]
public ActionResult Index()
{
return View();
}
}
以上代码表示只有用户zhang,zheng并且拥有角色admin的用户才可以被授权执行Index Action。
当一个未处理异常抛出时,Exception Filter将会被执行。Exception Filter需要实现IExceptionFilter接口:
public interface IExceptionFilter
{
void OnException(ExceptionContext filerContext);
}
ExceptionContext同样继承于ControllerContext,它提供了以下额外的属性:
属性名 | 类型 | 描述 |
ActionDescriptor | ActionDescriptor | 提供当前所执行的Action的信息 |
Result | ActionResult | Exception Filter所呈现的ActionResult |
Exception | Exception | 未处理的异常 |
ExceptionHandled | bool | 表示是否已有其他filter处理过此异常 |
ASP.NET MVC学习笔记-----Filter(1)的更多相关文章
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- ASP.NET MVC学习笔记-----Filter(2)
接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用,它需要实现IActionFilter接口: public ...
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- ASP.NET MVC 学习笔记(1)
从头开始系统地学习ASP.NET MVC 为什么要学习ASP.NET MVC?原因很多,可以先来看一下最早的ASP.NET WebForm的一些缺点: 传说中面试经常要问到的ASP.NET WebFo ...
- ASP.NET MVC学习笔记(一) 从路由开始创建mvc
之前一篇写一半发现版本太老了,是基于mvc2的. 两本参考书编写的顺序各方面都不太一样.决定重新写一篇. 我这篇文章基于mvc5,vs2015 参考书:Will保哥的ASP.NET MVC4开发指南 ...
- ASP.NET MVC 学习笔记之面向切面编程与过滤器
AOP(面向切面)是一种架构思想,用于把公共的逻辑放到一个单独的地方,这样就不用每个地方都写重复的代码了.比如程序中发生异常,不用每个地方都try…catch 只要在Golbal的Applicatio ...
- 【转】ASP.NET MVC学习笔记-Controller的ActionResult
1. 返回ViewResult public ActionResult Index() { ViewData["Message"] = "Welcome ...
随机推荐
- python-两个图片相似度算法
# -*- coding: UTF-8 -*- """ 作者:zxj 版本:1.0 日期:19-3-24 """ import cv2 im ...
- 最近在研究google的angularjs
最近在研究google的angularjs,先做个简单的例子来试试. <!doctype html> <html lang="en" ng-app="m ...
- Final发布——视频博客
1.视频链接 视频上传至优酷自频道,地址链接:http://v.youku.com/v_show/id_XMzk1OTIwNTUwMA==.html?spm=a2h0j.11185381.listit ...
- 20135337朱荟潼 Linux第三周学习总结 ——Linux内核源代码简介
朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 知识笔记 1.ar ...
- 网络助手的NABCD分析
我们小组这次做的软件名字叫为校园网络助手.本校校园网分为内网与外网认证两种,并且有着流量限制,所以我们设计出来了这项软件,它主要有着两项功能:一键WIFI与校内网盘. N--need.在学校里每当流量 ...
- java 面试 心得
16. ArrayList list = new ArrayList(20);中的list扩充几次() A 0 B 1 C 2 D 3 答案:A 解析:这里有点迷惑人,大家都 ...
- yum 安装mongodb mysql
// 云环境下更新包 (center os)yum update (多更有益) 修改yum包管理配置:vi /etc/yum.repos.d/mongodb-org-3.4.repo // 会自动新建 ...
- ElasticSearch 2 (34) - 信息聚合系列之多值排序
ElasticSearch 2 (34) - 信息聚合系列之多值排序 摘要 多值桶(terms.histogram 和 date_histogram)动态生成很多桶,Elasticsearch 是如何 ...
- Alpha冲刺-第三天
1.1 今日完成任务情况以及遇到的问题. 完成任务情况 杜世康:使用正则表达式对于弹幕文本中的数字,字母,符号,非法字符等过滤. 刘丹,李玉莹:实现主播管理功能 曹莹雯,尹楠: 调用NLPIR/ICT ...
- laravel 处理自定错误页面,如404,500,501,502,503,504等等
laravel 5.0 版本下,修改pp/Exceptions/Handler.phppublic function render($request, Exception $e) { if ($e i ...