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 ...
随机推荐
- Android 读取Assets中图片
bgimg0 = getImageFromAssetsFile("Cat_Blink/cat_blink0000.png"); * * 从Assets中读取图片 */ privat ...
- JavaScript之对象学习
对象是一种非常重要的数据类型,他是一种自包含的数据集合,包含在对象里面的数据可以通过属性和方法两种形式来访问; 1.属性是隶属于某个特定对象的变量; 2.方法是只有某个特定对象才能调用的函数; 而对象 ...
- 转载 LayoutInflater的inflate函数用法详解
http://www.open-open.com/lib/view/open1328837587484.html LayoutInflater的inflate函数用法详解 LayoutInflater ...
- ASP.NET动态生成图片样式的验证码
我们在设计用户登录模块时,经常会用到验证码,可以有效地防止黑客软件的恶意破解. 在此我就直接放置一个网页链接,以后用的时候可以当做备忘! 此连接中有多种验证码图片的样式可供参考. http://www ...
- spring mvc 非注解形式
目录(?)[+] webxml配置文件 注如果使用注解可以加上-- servlet上下文配置文件 test-servletxml 实体类Empjava StartController控制器 控制器Em ...
- windows下nginx+tomcat分布式集群部署
首先官网下载 http://nginx.org/en/download.html,我的本地环境为 实现的架构: 从图上可以看出,nginx作为负载均衡请求分发器,当请求A应用时候,分发到A集群,同理 ...
- 搭建Hadoop集群 (二)
前面的步骤请看 搭建Hadoop集群 (一) 安装Hadoop 解压安装 登录master, 下载解压hadoop 2.6.2压缩包到/home/hm/文件夹. (也可以从主机拖拽或者psftp压缩 ...
- Android Bitmap与DrawAble与byte[]与InputStream之间的转换工具类【转】
package com.soai.imdemo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; ...
- 如何使用 Android Studio 的 git hub 功能
How to use GitHub with Android Studio This article will explain how to use GitHub with Android Studi ...
- php在apache中运行模式
php在apache中运行模式 (2011-12-18 02:38:27) 标签: 杂谈 分类: 服务器及软件 一.php在php在三种工作方式:Apache 模块DLL) 以下分别比较: 1. ph ...