38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
| using AspNetCoreRateLimit;
 | |
| using Microsoft.AspNetCore.Http;
 | |
| using Microsoft.Extensions.Configuration;
 | |
| using Microsoft.Extensions.DependencyInjection;
 | |
| using System;
 | |
| 
 | |
| namespace IRaCIS.Core.API
 | |
| {
 | |
|     /// <summary>
 | |
|     /// IPLimit限流 启动服务
 | |
|     /// </summary>
 | |
|     public static class IpPolicyRateLimitSetup
 | |
|     {
 | |
|         public static void AddIpPolicyRateLimitSetup(this IServiceCollection services, IConfiguration Configuration)
 | |
|         {
 | |
|                  
 | |
|             // needed to store rate limit counters and ip rules
 | |
|             services.AddMemoryCache();
 | |
| 
 | |
|             //load general configuration from appsettings.json
 | |
|             services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
 | |
| 
 | |
|             //load ip rules from appsettings.json
 | |
|             //services.Configure<IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies"));
 | |
| 
 | |
|             // inject counter and rules stores
 | |
|             services.AddInMemoryRateLimiting();
 | |
|             //services.AddDistributedRateLimiting<AsyncKeyLockProcessingStrategy>();
 | |
|             //services.AddDistributedRateLimiting<RedisProcessingStrategy>();
 | |
|             //services.AddRedisRateLimiting();
 | |
| 
 | |
| 
 | |
| 
 | |
|             // configuration (resolvers, counter key builders)
 | |
|             services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
 | |
|         }
 | |
|     }
 | |
| } |