Do jeito em que o projeto foi feito no curso, como habilitar o /login no Swagger?
Do jeito em que o projeto foi feito no curso, como habilitar o /login no Swagger?
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:
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()
}
}
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()
}
}
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!