我的微信小程序使用.net7 Minimal API 作为后端,当服务器摆上公网后,可以观察到很多的攻击行为和暴力访问。所以,我需要使用微软的限流中间件部署相应的功能在服务器上
关键字:
AddFixedWindowLimiter
using Microsoft.AspNetCore.RateLimiting;
using System.Threading.RateLimiting;
后端 .net7 Minimal API 限流中间件的说明出现在微软ASP.NET Core 7.0的说明中:
ASP.NET Core 中的速率限制中间件 | Microsoft Learn
在文章的末尾,有一个更详细的blog说明:
ASP.NET Core rate limiting middleware in .NET 7 - Maarten Balliauw {blog}
与其他中间件非常相似,要启用ASP。. NET Core速率限制中间件,您必须将所需的服务添加到服务集合中,然后为所有请求管道启用中间件。让我们添加一个简单的速率限制器,将所有请求限制为每分钟10个,每个经过身份验证的用户名(或主机名,如果未经过身份验证):
var builder = WebApplication.CreateBuilder(args);builder.Services.AddRateLimiter(options =>
{options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(httpContext =>RateLimitPartition.GetFixedWindowLimiter(partitionKey: httpContext.User.Identity?.Name ?? httpContext.Request.Headers.Host.ToString(),factory: partition => new FixedWindowRateLimiterOptions{AutoReplenishment = true,PermitLimit = 10,QueueLimit = 0,Window = TimeSpan.FromMinutes(1)}));
});// ...var app = builder.Build();// ...app.UseRouting();
app.UseRateLimiter();app.MapGet("/", () => "Hello World!");app.Run();