9
respostas

[Bug] Swagger UI 404 not found

A rota /v3/api-docs funciona corretamente, porém ao tentar acessar a página do swagger-ui ele exibe um código http 404 not found.

package com.henrique.workshopmongo.config.security;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

import com.henrique.workshopmongo.config.filters.TokenFilter;

@Configuration @EnableWebSecurity public class SecurityConfigs {

@Autowired
TokenFilter tokenFilter;

@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .csrf(csrf -> csrf.disable())
        .sessionManagement(s -> s.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
        .authorizeHttpRequests(auth -> auth
            .requestMatchers(HttpMethod.POST,"/users/login").permitAll()
            .requestMatchers("/v3/api-docs/**", "/swagger-ui.html", "/swagger-ui/**").permitAll()
            .anyRequest().authenticated()
        )
        .addFilterBefore(tokenFilter, UsernamePasswordAuthenticationFilter.class);
        
    return http.build();
}

@Bean
AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception{
    return config.getAuthenticationManager();
}

@Bean
PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}

}

    <dependency>
          <groupId>org.springdoc</groupId>
          <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
          <version>2.0.2</version>
       </dependency>
9 respostas

Oi Matheus!

A url para ser digitada no navegador: http://localhost:8080/swagger-ui.html

Boa noite professor, ainda não consigo acessar essa página

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Pior que está tudo certo o código.

Chegou a parar o projeto e rodar novamente?

Ja sim professor, parece que quando eu inicializo o programa ele não disponibiliza essa URL pra que eu possa acessar. Será que pode ser alguma configuração interna do Spring doc?

Consegue compartilhar teu projeto?

Boa tarde Rodrigo. No meu caso, deu 403. Mas apliquei req.requestMatchers("/v3/api-docs/","/swagger-ui.html","//swagger-ui/").permitAll();

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Coloquei a dependencia e reiniciei o projeto. Mesmo assim, 403.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Jessé, a sua última url está com 2 barras: "//swagger-ui/**"

E tenta entrar nesse endereço no navegador: http://localhost:8080/swagger-ui.html

Verdade. Obrigado.