MVC-03 控制器(5)
八、动作过滤器
有时在运行Action之前或之后会需要运行一些逻辑运算,以及处理一些运行过程中所生成的异常状况,为了满足这个需求,ASP.NET MVC提供动作过滤器(Action Filter)来处理这些需求。
动作过滤器属性可以套用在Action之上,也可以套用在Controller类上,若动作过滤器属性套用在Controller类上等于套用此属性在此Controller的所有Action之上。
1.授权过滤器属性
授权过滤属性(Authorization Filter)是在ASP.NET MVC运行Controller与Action之前最早运行的过滤器,可用来对Action在正式运行前做一些额外的判断,例如,授权检查、是否为SSL安全联机、验证输入信息是否包含XSS攻击字符串等等。
(1)Authorize属性
Authorize属性可用来与ASP.NET框架的Membership或FormsAuthentication机制配合使用,当你登录会员,拥有会员身份或角色后,可以设置此Action必须符合哪些用户或角色的要求才能运行特定Action,如果授权验证失败,就会被自动导入登录页面,此部分机制与ASP.NET Web Form的用户验证时一模一样的。
[Authorize(Users = "Tom,Mary")]
public ActionResult Edit(int id)
{
return View();
}
[Authorize(Roles="Admin")]
public ActionResult Edit(int id)
{
return View();
}
在Web.config的<system.web>设置下包括一个<authentication>设置,其中的<forms>有个loginUrl可设置当权限不足时应该转向的地址:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="" />
</authentication>
(2)AllowAnonymous属性
AllowAnonymous属性通常与Authorize属性搭配使用,如下代码段所示。
[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
//
// GET: /Account/Login [AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
我们将Authorize属性套用在控制器层级,这意味着该控制器中所有Action都将受到Authorize属性的影响。如果希望在该控制器中设置几个Action拥有例外,也就是在不登录的情况下也可以运行Action,那么这时你就可以套用AllowAnonymous属性。AccountController中除了Login动作,都不应该被匿名访问。
(3)ChildActionOnly属性
ASP.NET MVC的View相关技术有个Html.RenderAction辅助方法,通过这个方法可以在View中再次发出另一个子请求,再运行一次ASP.NET MVC的运行过程,让其运行完后回传的HTML结果再插入到View中。
这个子要求所运行的Action其实跟通用Action差不多,但如果你希望要通过RenderAction运行的Action只允许通过Html.RenderAction辅助方法运行的话,就可以套用这个属性,演示程序如下。
[ChildActionOnly]
public ActionResult GetBanner()
{
return Content("<img src=\"/Content/Banner1jpg\" />");
}
(4)RequiredHttps属性
(5)ValidateInput属性
(6)ValidateAntiForgeryToken属性
ValidateAntiForgeryToken属性时ASP.NET MVC为了预防跨网站造假点击(Cross-Site Request Forgery, CSRF)的攻击而生成的。
[ValidateAntiForgeryToken]
public ActionResult ComplexModelBinding(GuestbookForm form1)
{
//...
}
@using(Html.BeginForm())
{
@Html.LabelFor(x=>x.Name)
@Html.TextBoxFor(x=>x.Name)
@Html.ValidationMessageFor(x=>x.Name)
<br /> @Html.AntiForgeryToken() <input type="submit" />
}
2.动作过滤器属性
(1)ActionFilter属性
(2)AsyncTimeout属性
(3)NoAsyncTimeout属性
3.结果过滤器属性
4.例外过滤器属性
5.自定义动作过滤器属性
MVC-03 控制器(5)的更多相关文章
- ASP.NET MVC 5 - 控制器
MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据 ...
- .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程)
阅读目录: 1.开篇介绍 2.ASP.NETMVC IControllerFactory 控制器工厂接口 3.ASP.NETMVC DefaultControllerFactory 默认控制器工厂 4 ...
- MVC 在控制器中获取某个视图动态的HTML代码
ASP.NET MVC 在控制器中获取某个视图动态的HTML代码 如果我们需要动态的用AJAX从服务器端获取HTML代码,拼接字符串是一种不好的方式,所以我们将HTML代码写在cshtml文件中, ...
- 三、ASP.NET MVC Controller 控制器(二:IController控制器的创建过程)
阅读目录: 1.开篇介绍 2.ASP.NETMVC IControllerFactory 控制器工厂接口 3.ASP.NETMVC DefaultControllerFactory 默认控制器工厂 4 ...
- c#异步编程(三)—ASP.NET MVC 异步控制器及EF异步操作
ASP.NET MVC 异步控制器及EF异步操作 异步控制器 ASP.NET MVC2后开始了对异步请求管道的支持,异步请求管道的作用是允许web服务器处理长时间运行的请求,比如 那些花费大量时间等待 ...
- [转]ASP.NET MVC 5 - 控制器
MVC代表: 模型-视图-控制器 .MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程序包含: · Models: 表示该应用程序的数据并使用验证逻辑来强制实施业务规则的数据 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道 语雀: https://www.yuque.com/yuejiangliu/dotnet/ ...
- Spring MVC(三)--控制器接受普通请求参数
Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...
- .NET/ASP.NET MVC Controller 控制器(深入解析控制器运行原理)
阅读目录: 1.开篇介绍 2.ASP.NETMVC Controller 控制器的入口(Controller的执行流程) 3.ASP.NETMVC Controller 控制器的入口(Controll ...
- C# MVC ( 将控制器的实体类注册到视图 )
(1)控制器 代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...
随机推荐
- objective-c 关键字和概念
@ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX. @interface 声明类 @implementation 实现类 @protocol 声 ...
- 推荐两个不错的CAD二次开发(.Net)手册
推荐两个不错的CAD二次开发(.Net)手册 http://www.mjtd.com/helpcenter/netguide/index.html http://www.ceesky.com/book ...
- English - when用法
一.作为副词,它有以下的用法: 1. 作为疑问副词,引导特殊疑问句,意为“什么时候:何时”.如: ( 1 ) When will they come back?( 2 ) What time wil ...
- 2014.9.23window对象
一.window对象 Wondow.navigate(url); 跳转页面(与超链接的区别:可以加逻辑条件) Var a = Math.random(); 0-1之间随机数 Var a = parse ...
- 关于Connection must be valid and open.
这个Bug真心很操蛋! 我的网站在公司做的运行一切都没问题,回家后咋自己的电脑上出现了Connection must be valid and open.这个问题. 我最后还是在英文网站的一个不起眼的 ...
- Servlet基础知识(三)—— 会话机制Session,Session和Cookie的异同
Servlet会话机制: Http是一种无状态协议,它是无记忆的.也就是说,服务器不会保存用户的任何信息,当同一用户再次去访问时,服务器是不认识你的,它还是会建立新的连接. 但有时候我们需要服务器保留 ...
- Servlet基础知识(一)——Servlet的本质
什么是Servlet: Servlet是运行在web服务器端(web容器,如tomcat)的程序,它与Applet相对,Applet是运行在客户端的程序. Servlet的主要作用是处理客户端的请求, ...
- Linux流量监控工具使用总结 - iftop
在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ...
- php phalcon
1. 准备所需工具 1) php环境 浏览 2) phalcon插件 浏览 2. 安装phalcon 将php_phalcon.dll拷贝到%PHP_HOME%\ext目录中 修改php.ini文件, ...
- asp.net core + angular2 的环境配置
国内整个对 asp.net core 和 angular2这些新出来的关注度不是太好.跟国外比很大差距. 我在试着去做这个整合的时候也碰到不少问题. 最后通过查阅大量资料才弄明白. 我想肯定也会有类 ...