Estou tentando criar um método securityFilterChain com Spring Boot 3.1.5
Aqui está o que eu tenho:
@Bean
@Throws(java.lang.Exception::class)
fun securityFilterChain(http: HttpSecurity): SecurityFilterChain? {
http
.authorizeHttpRequests(
Customizer<AuthorizationManagerRequestMatcherRegistry> { authorizeHttpRequests: AuthorizationManagerRequestMatcherRegistry ->
authorizeHttpRequests
.requestMatchers("/**").hasRole("USER")
}
)
return http.build()
}
Infelizmente, recebo este erro de compilação: "Os argumentos de tipo devem ser especificados para uma classe externa. Use o nome completo da classe para especificá-los."
Alguém pode orientar na direção certa?
Aqui está o que mais eu tentei:
@Bean
@Throws(Exception::class)
fun filterChain(http: HttpSecurity): SecurityFilterChain {
http.authorizeHttpRequests((requests) -> requests
.requestMatchers("/users/registration").permitAll())
return http.build()
}
mas isso também não compila.
Aqui estão as dependências do projeto:
dependencies {
implementation("org.apache.tomcat.embed:tomcat-embed-jasper")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.security:spring-security-core")
implementation("org.springframework.security:spring-security-config")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("io.jsonwebtoken:jjwt:0.9.0")
implementation("org.postgresql:postgresql")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core")
testImplementation("org.springframework.boot:spring-boot-starter-test") {
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
}
testImplementation("org.springframework.security:spring-security-test")
}
A documentação inclui uma visão geral da configuração do Kotlin :
Este exemplo usa o DSL Kotlin e inclui uma importação para a
invoke
função de extensão paraHttpSecurity
a qual é necessário usar o DSL dessa forma.Observe também que este exemplo usa,
authorizeRequests
mas é recomendado usarauthorizeHttpRequests
. Registrei um problema para melhorar este trecho nos documentos.