.net core MVC Filters 过滤器的使用

一、过滤器的优级依次介绍如下(逐次递减):

  Authorization Filter ->  Resource Filter -> Acton Filter -> Exception Filter -> Result Filter

  1、Authorization Filter  (权限过滤器)

    /// <summary>
    /// 权限过滤器
    /// </summary>
    public class GlobalAuthorizationFilter : Attribute, IAuthorizationFilter
    {
        /// <summary>
        /// 优化权最高的过滤器
        /// </summary>
        /// <param name="context"></param>
        public void OnAuthorization(AuthorizationFilterContext context)
        {
            //context.Result = new ObjectResult("IAuthorizationFilter 过滤输出");
            Console.WriteLine("IAuthorizationFilter 过滤输出");
        }
    }

  2、Resource Filter (资源过滤器)

    /// <summary>
    /// 资源过滤器
    /// </summary>
    public class GlobalResourceFilter : IResourceFilter
    {
        /// <summary>
        /// 获取资源后拦截
        /// </summary>
        /// <param name="context"></param>
        public void OnResourceExecuted(ResourceExecutedContext context)
        {
            Console.WriteLine("IResourceFilter OnResourceExecuted 输出");
        }

        /// <summary>
        /// 获取资源前拦截
        /// </summary>
        /// <param name="context"></param>
        public void OnResourceExecuting(ResourceExecutingContext context)
        {
            Console.WriteLine("IResourceFilter OnResourceExecuting 输出");
        }
    }

  3、Acton Filter

    /// <summary>
    /// Acion过滤器
    /// </summary>
    public class GlobalActonFilter : Attribute, IActionFilter
    {
        /// <summary>
        /// Acion 执行后拦截
        /// </summary>
        /// <param name="context"></param>
        public void OnActionExecuted(ActionExecutedContext context)
        {
            Console.WriteLine("IActionFilter OnActionExecuted Acion 执行后拦截");
        }

        /// <summary>
        /// Acion 执行前拦截
        /// </summary>
        /// <param name="context"></param>
        public void OnActionExecuting(ActionExecutingContext context)
        {
            Console.WriteLine("IActionFilter OnActionExecuting Acion 执行前拦截");
        }
    }

  4、Exception Filter

    /// <summary>
    /// 异常全局过滤器
    /// </summary>
    public class GlobalExceptionFilter : IExceptionFilter
    {
        /// <summary>
        /// 异常处理
        /// </summary>
        /// <param name="context">异常上下文</param>
        public void OnException(ExceptionContext context)
        {
            Console.WriteLine(context.Exception);
            //如果这里设为false,就表示告诉MVC框架,我没有处理这个错误。然后让它跳转到自己定义的错误页(设为true的话,就表示告诉MVC框架,异常我已经处理了。不需要在跳转到错误页了,也部会抛出黄页了)
            context.ExceptionHandled = false;
        }
    }

  5、Result Filter

    /// <summary>
    /// 结果过滤器
    /// </summary>
    public class GlobalResultFilter : IResultFilter
    {
        /// <summary>
        /// 动作结果执行后
        /// </summary>
        /// <param name="context"></param>
        public void OnResultExecuted(ResultExecutedContext context)
        {
            Console.WriteLine("IResultFilter OnResultExecuted Acion 动作结果执行后");
        }

        /// <summary>
        /// 动作结果执行前
        /// </summary>
        /// <param name="context"></param>
        public void OnResultExecuting(ResultExecutingContext context)
        {
            Console.WriteLine("IResultFilter OnResultExecuting Acion 动作结果执行前");
        }
    }

原文地址:https://www.cnblogs.com/intotf/p/10189665.html

时间: 2024-10-10 17:16:21

.net core MVC Filters 过滤器的使用的相关文章

.Net Core MVC中过滤器简介

原文:.Net Core MVC中过滤器简介 在.Net Framework MVC 中有四种过滤器,授权过滤器(Authorize).Action 过滤器.结果过滤器(Result).异常过滤器(Exception)四种过滤器.在.Net Core MVC中,有五种过滤器,授权过滤器.Action过滤器.异常过滤器.结果过滤器.资源过滤器,新增了资源过滤器. .Net Core MVC和.Net Framework MVC在基本使用上差别不大,主要的还是框架的差别.其中路由是个很重要的东西,参

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器

在MVC的请求管道 并不是  asp.net core的请求管道.所以说Filter是专用于MVC的 贯穿特性,横穿关注点.比如授权.日志 这里的Authorize其实就是一个Filter,主要用来授权的 比如这个Filter,我们要求必须使用Https才可以访问 授权在整个管道的最前面 action过滤器是在Action被调用之前和之后,这个时候ModelBing已经发生了.绑定完之后就可以操纵这些参数了. Rsult:在Action的IActionResult之前和之后,通过它可以控制结果的

ASP.NET Core Mvc中空返回值的处理方式

原文地址:https://www.strathweb.com/2018/10/convert-null-valued-results-to-404-in-asp-net-core-mvc/ 作者: Filip W. 译者: Lamond Lu .NET Core MVC在如何返回操作结果方面非常灵活的. 你可以返回一个实现IActionResult接口的对象, 比如我们熟知的ViewResult, FileResult, ContentResult等. [HttpGet] public IAct

asp.net core MVC 全局过滤器之ExceptionFilter过滤器(一)

本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter过滤器(一) asp.net core MVC 过滤器之ActionFilter过滤器(二) asp.net core MVC 过滤器之ResultFilter过滤器(三) asp.net core MVC 过滤器之ResourceFilter过滤器(四) asp.net core MVC 过滤器之AuthorizationFilter过

asp.net core MVC 过滤器之ActionFilter过滤器(二)

本系类将会讲解asp.net core MVC中的内置过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter过滤器(一) asp.net core MVC 过滤器之ActionFilter过滤器(二) asp.net core MVC 过滤器之ResultFilter过滤器(三) asp.net core MVC 过滤器之ResourceFilter过滤器(四) asp.net core MVC 过滤器之AuthorizationFilter过滤器

解说asp.net core MVC 过滤器的执行顺序

asp.net core MVC 过滤器会在请求管道的各个阶段触发.同一阶段又可以注册多个范围的过滤器,例如Global范围,controller范围等.以ActionFilter为例,我们来看看过滤器的触发顺序. 过滤器可注册范围 全局:将作用于所有请求的action controller:将作用于这个controller下的所有action action:作用于单个action 定义过滤器 全局 public class GlobalActionFilter : IAsyncActionFi

.Net Core MVC 过滤器(一)

1.过滤器 过滤器运行在MVC Action Invocation Pipeline(MVC Action 请求管道),我们称它为Filter Pipleline(过滤器管道),Filter Pipleline 运行在MVC选择Action执行前,因此我们可以在Action执行前做一些处理,例如:权限. 请求顺序如图: 2.过滤器类型 每个过滤器在Filter Pipleline的不同阶段执行. Authorization filters(权限过滤器)   Authorzation filter

ASP.NET Core MVC 过滤器介绍

原文:ASP.NET Core MVC 过滤器介绍 过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码,例如,您可以使用异常过滤器合并异常处理的代码. 过滤器如何工作? 过滤器在 MVC Action 调用管道中运行,有时称为过滤器管道.MVC选择要执行的Action方法后,才会执行过滤器管道: 实现 过滤器同时支持同步和异步两种不同的接口定义.您可以根据执行的任务类型,选择同步或异步实现. 同步过滤器定义OnStageExecutin

ASP.NET MVC Filters 4种默认过滤器的使用【附示例】

http://www.cnblogs.com/oppoic/p/mvc_authorization_action_result_exception_filters.html ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能: 判断登录与否或用户权限 决策输出缓存 防盗链 防蜘蛛 本地