万事皆缘 发表于 2023-4-3 18:09:53

.Net Core3.1 API访问进行频次限制


[*]首先,安装AspNetCore.RateLimit NuGet 包。您可以通过NuGet包管理器控制台或Visual Studio的NuGet包管理器来执行此操作。安装后,您将在项目中看到一个名为AspNetCoreRateLimit的文件夹,其中包含中间件的配置类。
[*]接下来,您需要在 Startup.cs 文件中注册中间件。您可以在ConfigureServices方法中使用以下代码来注册中间件:
services.AddMemoryCache();
services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
services.Configure<IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies"));
services.AddHttpContextAccessor();
services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();上述代码将注册并配置所需的服务和选项。请注意,此示例将使用内存缓存来存储速率限制数据。如果需要更持久的存储解决方案,请使用IRateLimitCounterStore和IIpPolicyStore接口的实现。
[*]接下来,您需要在Configure方法中使用以下代码将中间件添加到管道中:
app.UseIpRateLimiting();以上代码将添加速率限制中间件到ASP.NET Core应用程序的管道中。现在,您需要配置速率限制选项和策略。
[*]最后,您需要在 appsettings.json 文件中配置速率限制选项和策略。例如:{
"IpRateLimiting": {
    "EnableEndpointRateLimiting": true,
    "StackBlockedRequests": false,
    "RealIPHeader": "X-Real-IP",
    "ClientIdHeader": "X-ClientId",
    "HttpStatusCode": 429,
    "GeneralRules": [
      {
      "Endpoint": "*",
      "Period": "1m",
      "Limit": 5
      }
    ],
    "EndpointRules": []
},
"IpRateLimitPolicies": {
    "Default": {
      "Period": "1m",
      "Limit": 5
    }
}
}上述配置将限制每个客户端在1分钟内只能发送5个请求。如果需要更细粒度的限制,您可以配置EndpointRules。
这是一个简单的示例,您可以根据需要进行更改和优化。希望这可以帮助您开始实现API访问频次限制。
 

来源:https://www.cnblogs.com/duhaoran/archive/2023/04/03/17283560.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: .Net Core3.1 API访问进行频次限制