O curso está apresentando métodos de uma versão mais antiga do Spring, por essa razão, essa parte de Security está sendo mais trabalhosa para seguir o conteúdo, dessa forma, venho pesquisando e utilizando o Forum para tentar fazer funcionar com o comportamento esperado.
Abaixo segue a forma com a qual consegui implementar, até o momento, minha classe SecurityConfiguration:
@Configuration
@EnableWebSecurity
class SecurityConfiguration {
@Bean
fun securityFilterChain(http: HttpSecurity): SecurityFilterChain {
http.invoke {
csrf { disable() }
authorizeRequests {
authorize(HttpMethod.GET,"/topicos", hasAuthority(READ))
authorize(HttpMethod.POST,"/topicos", hasAuthority(WRITE))
authorize(HttpMethod.PUT,"/topicos", hasAuthority(WRITE))
authorize(HttpMethod.DELETE,"/topicos", hasAuthority(WRITE))
authorize(anyRequest, authenticated)
}
sessionManagement {
sessionCreationPolicy = SessionCreationPolicy.STATELESS
}
headers { frameOptions { disable() } }
httpBasic { }
}
return http.build()
}
@Bean
fun encoder(): PasswordEncoder = BCryptPasswordEncoder()
}
Podem orientar a forma mais atual de trabalhar com essas authorizeRequests, bem como as Roles são definidas? Eu fiz dessa forma e funcionou, mas não sei se essa é a boa prática nesse caso.
RolesPermissions:
class RolesPermissions {
companion object{
const val READ = "READ"
const val WRITE = "WRITE"
}
}