1
resposta

[Ajudando] erro ao usar o requestMatchers

Fala dev!

Durante o curso, o Spring Boot teve atualizações, conforme foi informado numa das Atividades. Eu segui o curso fielmente em relação a versão do Spring Boot e inclusive as nomenclaturas de métodos, classes...

Ao atualizar o Spring Boot para a versão 3.2.1 e também atualizar a classe "SecurityConfigurations" para aplicar o novo método no return do "SecurityFilterChain", a aplicação só dava erro.

Método sugerido:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return 
        http.csrf(csrf -> csrf.disable())
        .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
        .authorizeHttpRequests(req -> {
            req.requestMatchers("/login").permitAll();
            req.anyRequest().authenticated();
        })
    .build();
}

Método que funcionou:

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http.csrf().disable()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and().authorizeHttpRequests()
                .antMatchers(HttpMethod.POST, "/login").permitAll()
                .anyRequest().authenticated()
                .and().addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
                .build();
    }

Sim, eu sei que o "correto" é o método que foi sugerido, mas o mais correto é o que funciona. hahaha Parece que o 'requestMatcher' tem que "combinar" com o que estamos chamando.

1 resposta

Oii, André! Tudo bem?

O método que você usou é perfeitamente válido! :)

A diferença entre os dois métodos é basicamente a forma como eles são escritos, mas ambos têm o mesmo objetivo: configurar a segurança da aplicação.

Obrigada por compartilhar conosco aqui essa dica. Se você quiser postar mais sugestões, fique à vontade.

Abraços!