{"id":23317975,"url":"https://github.com/easyabp/abp.aspnetcoreratelimit","last_synced_at":"2025-04-07T07:15:04.536Z","repository":{"id":41205471,"uuid":"247733612","full_name":"EasyAbp/Abp.AspNetCoreRateLimit","owner":"EasyAbp","description":"An Abp module helps you control how often your service is used.","archived":false,"fork":false,"pushed_at":"2024-10-27T16:29:32.000Z","size":2269,"stargazers_count":27,"open_issues_count":3,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-29T16:20:45.191Z","etag":null,"topics":["abp","abp-vnext","aspnetcoreratelimit","dotnetcore","easyabp","rate-limiting","rate-limits"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EasyAbp.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-16T14:54:48.000Z","updated_at":"2024-10-27T16:28:58.000Z","dependencies_parsed_at":"2023-02-09T13:15:47.816Z","dependency_job_id":"9d092190-e52a-4217-9f66-b4fa90b7d1bf","html_url":"https://github.com/EasyAbp/Abp.AspNetCoreRateLimit","commit_stats":{"total_commits":62,"total_committers":5,"mean_commits":12.4,"dds":0.467741935483871,"last_synced_commit":"2ec03850f93eaf039120fa346b252c20c067d319"},"previous_names":["easyabp/abp.usinglimiter"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyAbp%2FAbp.AspNetCoreRateLimit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyAbp%2FAbp.AspNetCoreRateLimit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyAbp%2FAbp.AspNetCoreRateLimit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EasyAbp%2FAbp.AspNetCoreRateLimit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EasyAbp","download_url":"https://codeload.github.com/EasyAbp/Abp.AspNetCoreRateLimit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247608153,"owners_count":20965952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abp","abp-vnext","aspnetcoreratelimit","dotnetcore","easyabp","rate-limiting","rate-limits"],"created_at":"2024-12-20T17:14:44.841Z","updated_at":"2025-04-07T07:15:04.473Z","avatar_url":"https://github.com/EasyAbp.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Abp.AspNetCoreRateLimit\n\n[![ABP version](https://img.shields.io/badge/dynamic/xml?style=flat-square\u0026color=yellow\u0026label=abp\u0026query=%2F%2FProject%2FPropertyGroup%2FAbpVersion\u0026url=https%3A%2F%2Fraw.githubusercontent.com%2FEasyAbp%2FAbp.AspNetCoreRateLimit%2Fmaster%2FDirectory.Build.props)](https://abp.io)\n[![NuGet](https://img.shields.io/nuget/v/EasyAbp.Abp.AspNetCoreRateLimit.svg?style=flat-square)](https://www.nuget.org/packages/EasyAbp.Abp.AspNetCoreRateLimit)\n[![NuGet Download](https://img.shields.io/nuget/dt/EasyAbp.Abp.AspNetCoreRateLimit.svg?style=flat-square)](https://www.nuget.org/packages/EasyAbp.Abp.AspNetCoreRateLimit)\n[![Discord online](https://badgen.net/discord/online-members/xyg8TrRa27?label=Discord)](https://discord.gg/xyg8TrRa27)\n[![GitHub stars](https://img.shields.io/github/stars/EasyAbp/Abp.AspNetCoreRateLimit?style=social)](https://www.github.com/EasyAbp/Abp.AspNetCoreRateLimit)\n\nAn Abp module helps you control how often your service is used.\n\n## Installation\n\n1. Install the following NuGet packages. ([see how](https://github.com/EasyAbp/EasyAbpGuide/blob/master/How-To.md#add-nuget-packages))\n\n    * EasyAbp.Abp.AspNetCoreRateLimit.AspNetCoreRateLimit\n    * EasyAbp.Abp.AspNetCoreRateLimit.AspNetCoreRateLimit.Client\n    * EasyAbp.Abp.AspNetCoreRateLimit.AspNetCoreRateLimit.Ip\n\n1. Add `DependsOn(typeof(AbpClientLimiterModule))` and `DependsOn(typeof(AbpIpLimiterModule))` attribute to configure the module dependencies. ([see how](https://github.com/EasyAbp/EasyAbpGuide/blob/master/How-To.md#add-module-dependencies))\n\n\n1. Extends IHostBuilder with Limiter configuration methods.\n\n    ```csharp\n    IHostBuilder.UseAspNetCoreRateLimitIp();\n    IHostBuilder.UseAspNetCoreRateLimitClient();\n    ```\n\n1. Register the middleware below within the `OnApplicationInitialization()` method of `AppModule.cs` \"before\" the `UseRouting()` `middleware`:\n\n    ```csharp\n    app.UseIpRateLimiting();\n    app.UseClientRateLimiting();\n    ```\n\n1. Add the following code at `ConfigureServices()` method \n\n    ```csharp\n    context.Services.AddLimiterService\u003cMemoryCacheRateLimitCounterStore\u003e(service =\u003e\n    {\n        service.AddLimiterIpService\u003cMemoryCacheIpPolicyStore\u003e();\n        service.AddLimiterClientService\u003cMemoryCacheClientPolicyStore\u003e();\n    });\n    ```\n\n\n# Documentation\n\nRate limiting based on client IP\n\n  - [Setup and configuration](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/IpRateLimitMiddleware#setup)\n  - [Defining rate limit rules](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/IpRateLimitMiddleware#defining-rate-limit-rules)\n  - [Behavior](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/IpRateLimitMiddleware#behavior)\n  - [Update rate limits at runtime](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/IpRateLimitMiddleware#update-rate-limits-at-runtime)\n\nRate limiting based on client ID\n\n  - [Setup and configuration](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/ClientRateLimitMiddleware#setup)\n  - [Defining rate limit rules](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/ClientRateLimitMiddleware#defining-rate-limit-rules)\n  - [Behavior](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/ClientRateLimitMiddleware#behavior)\n  - [Update rate limits at runtime](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/ClientRateLimitMiddleware#update-rate-limits-at-runtime)\n\nAdvanced configuration\n\n  - [Customize the quoata exceeded response](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/Quota-exceeded-response)\n  - [IP / ClientId resolve contributors](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/Resolve-Contributors)\n  - [Use Redis as a distributed counter store](https://github.com/stefanprodan/AspNetCoreRateLimit/wiki/Using-Redis-as-a-distributed-counter-store)\n\n# Roadmap\n\n- [ ] Unit test\n      \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasyabp%2Fabp.aspnetcoreratelimit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasyabp%2Fabp.aspnetcoreratelimit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasyabp%2Fabp.aspnetcoreratelimit/lists"}