对比新文件 |
| | |
| | | 锘縰sing Microsoft.AspNetCore.Http; |
| | | using Microsoft.Extensions.Configuration; |
| | | using Microsoft.Extensions.DependencyInjection; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_Core.Extensions |
| | | { |
| | | /// <summary> |
| | | /// IPLimit闄愭祦 鍚姩鏈嶅姟 |
| | | /// </summary> |
| | | public static class IpPolicyRateLimitSetup |
| | | { |
| | | public static void AddIpPolicyRateLimitSetup(this IServiceCollection services, IConfiguration Configuration) |
| | | { |
| | | if (services == null) throw new ArgumentNullException(nameof(services)); |
| | | |
| | | // needed to store rate limit counters and ip rules |
| | | //services.AddMemoryCache(); |
| | | |
| | | //load general configuration from appsettings.json |
| | | //services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); |
| | | |
| | | // inject counter and rules stores |
| | | //services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>(); |
| | | //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>(); |
| | | //services.AddSingleton<IProcessingStrategy, AsyncKeyLockProcessingStrategy>(); |
| | | |
| | | // inject counter and rules distributed cache stores |
| | | //services.AddSingleton<IIpPolicyStore, DistributedCacheIpPolicyStore>(); |
| | | //services.AddSingleton<IRateLimitCounterStore, DistributedCacheRateLimitCounterStore>(); |
| | | |
| | | // the clientId/clientIp resolvers use it. |
| | | //services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); |
| | | |
| | | // configuration (resolvers, counter key builders) |
| | | //services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>(); |
| | | } |
| | | } |
| | | } |