ASP.NET Core定义过滤器、拦截器,控制接口、资源、网页、静态文件等的访问,添加权限验证,防攻击爬虫

ASP.NET Core过滤器详解
本文深入探讨了ASP.NET Core中的各种过滤器,包括页面过滤器IPageFilter、资源过滤器IResourceFilter、接口过滤器IActionFilter及权限过滤器IAuthorizationFilter。通过实例详细解析了接口过滤器的实现方式,并介绍了如何在Startup类中配置这些过滤器以实现对动态和静态资源的全面监控。

页面过滤器 IPageFilter

资源过滤器 IResourceFilter

接口过滤器 IActionFilter

权限过滤器 IAuthorizationFilter

当然还有其他的很多

下面以接口过滤器为例:

1、定义类

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

namespace xxx
{
    public class ActionFilter : IActionFilter
    {
        public void OnActionExecuted(ActionExecutedContext context)
        {

        }

        public void OnActionExecuting(ActionExecutingContext context)
        {

        }
    }
}

context.Result赋值后该访问便被拦截

2、在Startup.ConfigureServices中注入

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(options => options.Filters.Add<ActionFilter>());
            ...

静态文件过滤器

1、定义类

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.StaticFiles;

namespace xxx
{
    public class StaticFileFilter
    {
        private static void OnPrepareResponse(StaticFileResponseContext context)
        {

        }

        public static StaticFileOptions Options;

        static StaticFileFilter()
        {
            Options = new StaticFileOptions();
            Options.OnPrepareResponse = OnPrepareResponse;
        }
    }
}

如果想拦截该访问,参考以下代码:

        public static void Forbid(StaticFileResponseContext context)
        {
            var response = context.Context.Response;
            response.StatusCode = HttpUtil.GetStatusCode(HttpStatusCode.Forbidden);
            response.ContentLength = 0;
            response.Body = BinaryUtil.EmptyStream;
        }

2、在Startup.Configure中应用 

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseStaticFiles(StaticFileFilter.Options);
            ...

问: 如果想对所有资源进行监控,用哪个?

答:ResourceFilter(所有动态资源拦截)+StaticFileFilter(所有静态资源拦截)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上海好程序员

给上海好程序员加个鸡腿!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值