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

被折叠的 条评论
为什么被折叠?



