• 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属性
  • 相关阅读:
    前端cookie操作用到的一些小总结
    sublime 官方正版,自己用的插件配置,最轻量级安装流程
    Node.js 终端输出颜色设置
    Mac中设置别名 (转载)
    Swift 3 使用objc_setAssociatedObject
    ruby 笔记
    编程模式
    rvm pod gem 等常用命令
    node.js 笔记
    Node.js 对象合并
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/6145153.html
Copyright © 2020-2023  润新知