.NET Core中的五种过滤器详解

过滤器概述

在 .NET Core 中,过滤器(Filters)和面向切面编程(AOP)有着紧密的联系,过滤器可以看作是 AOP 在 .NET Core 框架中的一种具体实现方式。
在.NET Core中过滤器是一种特殊的组件,它能够在请求处理管道的特定阶段执行自定义逻辑。借助过滤器,你可以把横切关注点(像日志记录、权限验证、异常处理等)从业务逻辑中分离出来,从而提升代码的可维护性与可复用性。

1. 授权过滤器(Authorization Filters)

作用:用于验证用户是否有权限访问某个资源,在请求进入控制器之前执行。若验证不通过,会阻止请求继续执行。

示例代码:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

public class CtsAuthorizationAttribute : Attribute, IAuthorizationFilter
    {
   
        // 鉴权
        public void OnAuthorization(AuthorizationFilterContext context)
        {
   
            // 在进入控制器构造方法前执行,
            Console.WriteLine(" Authorization ========= OnAuthorization");
        }
    }

2. 资源过滤器(Resource Filters)

作用:在授权之后、模型绑定之前执行,主要用于缓存和资源管理

示例代码:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

    /// <summary>
    /// 自定义资源验证过滤器
    /// </summary>
    public class CtsResourceFilterAttribute : Attribute, IResourceFilter
    {
   
        // 资源验证之后
        public void OnResourceExecuted(ResourceExecutedContext context)
        {
   
            Console.WriteLine("ResourceFilter=============OnResourceExecuted");

        }

        // 资源验证之前
        public void OnResourceExecuting(ResourceExecutingContext context)
        {
   
            // 当context的Result 不等于空时, 被短路,不再会像下执行业务逻辑
            // 节省资源的开销
            // 通常利用该性质 做数据的缓存处理,[直接在进入控制器的方法前就获得了返回数据]
            Console.WriteLine("ResourceFilter=============OnResourceExecuting");

        }
    }

3. 动作过滤器(Action Filters)

作用:在控制器方法执行前后执行,可用于日志记录、参数验证等。

示例代码:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

    /// <summary>
    /// 自定义动作验证过滤器
    /// </summary>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值