1
resposta

Login no Swagger

Do jeito em que o projeto foi feito no curso, como habilitar o /login no Swagger?

1 resposta

Oi José! Tudo bem?

Para habilitar o endpoint de login no Swagger em um projeto que utiliza Kotlin e Spring, você precisará configurar a segurança do Swagger para permitir o acesso ao endpoint de autenticação. Aqui está um exemplo de como você pode fazer isso:

  1. Configuração do Swagger: Primeiro, certifique-se de que você tenha a configuração básica do Swagger no seu projeto. Normalmente, isso é feito em uma classe de configuração.

    import org.springframework.context.annotation.Bean
    import org.springframework.context.annotation.Configuration
    import springfox.documentation.builders.PathSelectors
    import springfox.documentation.builders.RequestHandlerSelectors
    import springfox.documentation.spi.DocumentationType
    import springfox.documentation.spring.web.plugins.Docket
    import springfox.documentation.swagger2.annotations.EnableSwagger2
    
    @Configuration
    @EnableSwagger2
    class SwaggerConfig {
    
        @Bean
        fun api(): Docket {
            return Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.seu.pacote"))
                .paths(PathSelectors.any())
                .build()
        }
    }
    
  2. Configuração de Segurança: Em seguida, você precisa configurar a segurança para permitir que o Swagger acesse o endpoint de login. Isso pode ser feito na classe de configuração de segurança.

    import org.springframework.context.annotation.Configuration
    import org.springframework.security.config.annotation.web.builders.HttpSecurity
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
    
    @Configuration
    class SecurityConfig : WebSecurityConfigurerAdapter() {
    
        override fun configure(http: HttpSecurity) {
            http
                .authorizeRequests()
                .antMatchers("/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**", "/login").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
        }
    }
    
  3. Endpoint de Login: Certifique-se de que o endpoint de login está devidamente configurado no seu controlador.

    import org.springframework.web.bind.annotation.GetMapping
    import org.springframework.web.bind.annotation.RequestMapping
    import org.springframework.web.bind.annotation.RestController
    
    @RestController
    @RequestMapping("/login")
    class LoginController {
    
        @GetMapping
        fun login(): String {
            return "Página de login"
        }
    }
    

Com essas configurações, o Swagger deve ser capaz de acessar o endpoint de login sem problemas.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.