Olá, tudo bem?
OncePerRequestFilter e WebFilter são duas anotações usadas em aplicações Spring para filtrar requisições HTTP. A principal diferença entre os dois é que OncePerRequestFilter garante que o filtro seja executado apenas uma vez por requisição, enquanto WebFilter não faz essa garantia. Isso significa que, se você tiver várias instâncias de WebFilter registradas para a mesma URL, cada uma será executada para cada requisição. A configuração addFilterBefore em HttpSecurity é válida para ambos os tipos de filtro. A classe SecurityContextHolder é uma forma comum de acessar o contexto de segurança, incluindo informações sobre o usuário autenticado, durante todo o ciclo de vida da requisição. Outra opção é usar anotações como @AuthenticationPrincipal.