Skip to content

rcalazansn/AspNetCoreRateLimitWithRedis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

AspNetCoreRateLimitWithRedis

Passo 1: Instalar NuGets

install-package AspNetCoreRateLimit
install-package AspNetCoreRateLimit.Redis

Passo 2: Adicionar na classe Startup.cs (ConfigureServices)

services.Configure<IpRateLimitOptions>(options =>               // Defini o limite de cota por IP de Origem
{
    options.GeneralRules = new List<RateLimitRule>()            // Regra de limite de requisição
    {
        new()
        {
            Endpoint = ":/pedido",                              // Expressão regular para filtrar o recurso http a ser monitorado
            Period = "1d",                                      // Período (s:segundo, m: minuto, h:hora e d:dia
            Limit = 100,                                        // Total de requisições permitidas (para o período)
            QuotaExceededResponse = new QuotaExceededResponse   //Padronizaçãop da resposta
            {
                Content = "Too Many Requests in 1d",            //Resposta
                ContentType = "application/json",               // Tipo da resposta
                StatusCode = 429                                //Codigo Http de retorno de estado
            },
        }
    };
    options.EnableEndpointRateLimiting = true;                  // Ativa cota de limite para endpoint customizado
    options.EnableRegexRuleMatching = true;                     // Habilita Regex
});

//Redis IP - Connection String
services.AddSingleton<IConnectionMultiplexer>(provider => ConnectionMultiplexer.Connect("127.0.0.1")); 
services.AddRedisRateLimiting();
services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();

Passo 3: Adicionar na classe Startup.cs (Configure)

app.UseIpRateLimiting();    // Ativa o uso do Middleware de RateLimit

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages