zoukankan      html  css  js  c++  java
  • ASP.NET MVC动作过滤器

    ASP.NET MVC提供了4种不同的动作过滤器(Aciton Filter)。

    1.Authorization Filter

    在执行任何Filter或Action之前被执行,用于身份验证

    2.Action Filter

    在执行Action之前或之后被执行,用于执行的Action需要生成记录或者缓存数据时

    3.Result Filter

    在执行ActionResult的前后被执行。在View被显示到浏览器之前可以执行一些逻辑运算,或修改ViewResult的输出结果

    4.Exception Filter

    在Action执行之前或之后或者ActionResult执行之前或之后被执行。在执行中发生异常时,可以使用此Filter指向其他页面来显示错误信息

    下面是不同动作过滤器的执行顺序:

    OnAuthorization

                  ↓

    OnActionExecuting

                   ↓

    执行动作(Action)

                   ↓

    OnActionExecuted

                   ↓

    OnResultExecuting

                   ↓

    执行视图(View)

                   ↓

    OnResultExecuted

                  ↓

    OnException

    动作过滤器一律使用属性(Attribute)的方式应用在Action之上。eg:

    [csharp] view plain copy
     
     print?
    1. [Authorize(Roles="admin")]  
    2. public ActionResult Edit(int id)  
    3. {  
    4.         return View();  
    5. }  


    这四种动作过滤器都是.net属性(Attribute)类,只要继承Attribute类并实现与之对应的接口就可以扩展功能。

    注:动作过滤器属性也可以用在Controller上,若用在Controller上,则将此属性用在此Controller中的所有Action之上。

    Authorization过滤器属性

    • Authorize属性
    用户或角色符合要求才能被使用。否则就会跳转到登录页面
    其中在web.config文件的system.web类的设定中有一个Authentication设定,其中<forms>部分有一个loginUrl属性可以设定当权限不足时应该跳转的地址,eg:
            
    [csharp] view plain copy
     
     print?
    1. <authentication mode="Forms">  
    2.   <forms loginUrl="~/Account/LogOn" timeout="2880" />  
    3. </authentication>  
    • ChildActionOnly属性
     
    • RequiredHttps属性
            应用RequiredHttps属性,让Action仅能显示在https安全登录的状态下。如果用户使用http连接,该Action就会自动转向同一个Action的https网址。
            
    [csharp] view plain copy
     
     print?
    1. [RequireHttps]  
    2. public ViewResult Index()  
    3. {  
    4.         ......  
    5.         return View();  
    6. }  
    • ValidateInput属性
  • 相关阅读:
    Spring学习(1):侵入式与非侵入式,轻量级与重量级
    集群结构、分布式结构、单机结构
    使用Idea工具创建Maven WebApp项目
    文件上传:CommonsMultipartResolver
    Memcached
    Window下部署MySql数据库
    HashCode详解
    JDK源码分析:Object.java
    二进制运算
    关于打印日志几个方法的列举
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/6145153.html
Copyright © 2011-2022 走看看