【调整】移除第三方AspNetCoreRateLimit限流组件,使用.net8自带的RateLimiter特性。

This commit is contained in:
jianweie code
2023-11-17 13:36:08 +08:00
parent 4425c53413
commit 9efb2e11a6
11 changed files with 203 additions and 262 deletions

View File

@@ -1,42 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AspNetCoreRateLimit;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace CoreCms.Net.Core.Config
{
/// <summary>
/// IPLimit限流 启动服务
/// </summary>
public static class IpPolicyRateLimitSetup
{
public static void AddIpPolicyRateLimitSetup(this IServiceCollection services, IConfiguration Configuration)
{
if (services == null) throw new ArgumentNullException(nameof(services));
// 需要将限制规则存储到高速内存中
services.AddMemoryCache();
// 载入配置文件的规则设置
services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
// 注入计数器和规则存储
services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
// 注入计数器和规则分布式缓存存储(根据需求自行扩展)
//services.AddSingleton<IIpPolicyStore, DistributedCacheIpPolicyStore>();
//services.AddSingleton<IRateLimitCounterStore, DistributedCacheRateLimitCounterStore>();
// 用于解析上下文的注入
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// 配置(解析器、计数器密钥生成器)
services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
services.AddSingleton<IProcessingStrategy, AsyncKeyLockProcessingStrategy>();
}
}
}

View File

@@ -11,7 +11,6 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
<PackageReference Include="Castle.Core" Version="5.1.1" />