zoukankan      html  css  js  c++  java
  • ASP.Net MVC过滤器

    一.背景

       过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能:

    判断登录与否或用户权限

    决策输出缓存

    防盗链

    防蜘蛛

    本地化与国际化设置

    实现动态Action(做权限管理系统的好东西)

    二.简介

    1.MVC4提供了四种过滤器

    分别是:   身份验证过滤器,行为过滤器,结果过滤器,异常过滤器

    分别要实现:AuthorizeAttribute,ActionFilterAttribute,ActionFilterAttribute,HandleErrorAttribute

    分别要重写:OnAuthorization,OnAcitonExecuting OnActionExecuted, OnResultExecuting OnResultExecuted,OnException

    2. 使用方式有两种

      A.自定义类继承自相应的类或接口,重写方法,作为特性使用

    注:

    使用方式一:作为Controller或Action的特性来使用

    使用方式二:在全局FilterConfig中注册,是过滤器对所有Controller有好用,不需挨个加特性标识

    B.在控制器类中重写方法,也可以在一个基类中重写方法 ,让子类继承,这种效果等同于将特性标识加在控制器上

    三.使用

    1.身份验证过滤器

    a.在约束的Action执行前执行

    b.重写OnAuthorization方法

    c.如果不想使用默认的身份验证方式,需要将base.***删除

    d.如果想进行跳转,需要设置上下文对象的Result属性为new RedirectResult(string url);

    获取区域名,控制器名,方法名

    string strAreaName = filterContext.RouteData.DataTokens["area"].ToString().ToLower();

    string strControllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();

    string strActionName = filterContext.ActionDescriptor.ActionName.ToLower();

    2.异常过滤器

    a.当发生异常时,用于进行自定义异步处理,如记录日志、跳转页面

    b.使用自定义异常处理,需要在web.config中为system.web添加<customErrors mode="On" />节点

    c.重写

    OnException

    方法,不要禁用base.OnException(filterContext);

    d.如果想进行跳转,需要设置上下文对象的Result属性为new RedirectResult(string url);

    3.行为过滤器

    a.在行为被执行前、后执行的过滤器

    b.重写方法OnActionExecuting(行为执行前)

    c.重写方法OnActionExecuted(行为执行后)

    4.结果过滤器

    a.在结果被执行前、后执行的过滤器

    b.重写方法OnResultExecuting(结果执行前)

    c.重写方法OnResultExecuted(结果执行后)

    FilterDemo.7z
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    浏览器页面呈现过程
    Function与Object
    前端性能优化方案
    CSS引入方式
    浏览器事件
    Js继承的实现方式
    H5页面 绝对定位元素被 软键盘弹出时顶起
    总结angular+ionic项目中的问题
    vue开发学习中遇到的问题以及解决方法
    css重修之书(一):如何用css制作比1px更细的边框
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/5897989.html
Copyright © 2011-2022 走看看