Class RateLimitFilter
java.lang.Object
jakarta.servlet.GenericFilter
br.ufsc.labsec.web.filters.RateLimitFilter
- All Implemented Interfaces:
jakarta.servlet.Filter, jakarta.servlet.FilterConfig, Serializable
- Direct Known Subclasses:
RateLimitFilterSigner
public class RateLimitFilter
extends jakarta.servlet.GenericFilter
Classe que encapsula métodos comuns para filtros de limite de requisição.
Esses filtros são responsáveis por controlar o número de requisições permitidas
para um IP dentro de um período de tempo especificado.
Eles verificam se o limite de requisições foi excedido e respondem com um código de status
HTTP 429 (Too Many Requests) e uma mensagem de erro JSON quando necessário.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddestroy()Executa a destruição do filtro.voiddoFilter(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain chain) Este método filtra a requisição verificando se o limite de requisições em um periodo especificado não foi excedido.voidinit(jakarta.servlet.FilterConfig filterConfig) Método de inicialização do filtro.voidsetParamsAndStartBucket(String jsonKey, String errorMessage, int bucketDuration, int bucketRequests) Define os parâmetros iniciais para o filtro de limite de requisição e inicia o contador de intervalo de tempo.Methods inherited from class jakarta.servlet.GenericFilter
getFilterConfig, getFilterName, getInitParameter, getInitParameterNames, getServletContext, init
-
Constructor Details
-
RateLimitFilter
public RateLimitFilter()
-
-
Method Details
-
init
public void init(jakarta.servlet.FilterConfig filterConfig) throws jakarta.servlet.ServletException Método de inicialização do filtro.- Specified by:
initin interfacejakarta.servlet.Filter- Overrides:
initin classjakarta.servlet.GenericFilter- Parameters:
filterConfig- Configuração do filtro.- Throws:
jakarta.servlet.ServletException- Caso ocorra um erro durante a inicialização do filtro.
-
doFilter
public void doFilter(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain chain) throws IOException, jakarta.servlet.ServletException Este método filtra a requisição verificando se o limite de requisições em um periodo especificado não foi excedido.- Parameters:
request- Requisição recebida pelo filtroresponse- Resposta à requisiçãochain- Cadeia de filtros que pode ser usada para passar a requisição e resposta para o próximo filtro na cadeia- Throws:
IOException- se ocorrer um erro de entrada ou saída ao processar a requisição ou respostajakarta.servlet.ServletException- se ocorrer uma exceção geral do servlet ao processar a requisição ou resposta
-
setParamsAndStartBucket
public void setParamsAndStartBucket(String jsonKey, String errorMessage, int bucketDuration, int bucketRequests) Define os parâmetros iniciais para o filtro de limite de requisição e inicia o contador de intervalo de tempo.- Parameters:
jsonKey- Chave JSON a ser usada na resposta à requisição em caso de erro.errorMessage- Mensagem de erro a ser incluída na resposta à requisição caso o limite seja excedido.bucketDuration- A duração do intervalo de tempo em segundos para o controle de limite de requisição.bucketRequests- O número máximo de requisições permitidas dentro do intervalo de tempo especificado em bucketDuration.
-
destroy
public void destroy()Executa a destruição do filtro.
-