Spring Boot SecurityFilterChain方法Sping Boot 3.1.5Kotlin

omhiaaxx  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(166)

我正在尝试使用Sping Boot 3.1.5创建securityFilterChain方法
这就是我所拥有的:

  1. @Bean
  2. @Throws(java.lang.Exception::class)
  3. fun securityFilterChain(http: HttpSecurity): SecurityFilterChain? {
  4. http
  5. .authorizeHttpRequests(
  6. Customizer<AuthorizationManagerRequestMatcherRegistry> { authorizeHttpRequests: AuthorizationManagerRequestMatcherRegistry ->
  7. authorizeHttpRequests
  8. .requestMatchers("/**").hasRole("USER")
  9. }
  10. )
  11. return http.build()
  12. }

字符串
不幸的是,我得到了这个编译错误:“应该为外部类指定类型参数。使用完整的类名来指定它们。”
有没有人能给我指引正确的方向?
以下是我尝试过的其他方法:

  1. @Bean
  2. @Throws(Exception::class)
  3. fun filterChain(http: HttpSecurity): SecurityFilterChain {
  4. http.authorizeHttpRequests((requests) -> requests
  5. .requestMatchers("/users/registration").permitAll())
  6. return http.build()
  7. }


但这并不能很好地编译。
以下是项目依赖项:

  1. dependencies {
  2. implementation("org.apache.tomcat.embed:tomcat-embed-jasper")
  3. implementation("org.springframework.boot:spring-boot-starter-data-jpa")
  4. implementation("org.springframework.boot:spring-boot-starter-validation")
  5. implementation("org.springframework.boot:spring-boot-starter-security")
  6. implementation("org.springframework.boot:spring-boot-starter-web")
  7. implementation("org.springframework.security:spring-security-core")
  8. implementation("org.springframework.security:spring-security-config")
  9. implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
  10. implementation("org.jetbrains.kotlin:kotlin-reflect")
  11. implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
  12. implementation("io.jsonwebtoken:jjwt:0.9.0")
  13. implementation("org.postgresql:postgresql")
  14. implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core")
  15. testImplementation("org.springframework.boot:spring-boot-starter-test") {
  16. exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
  17. }
  18. testImplementation("org.springframework.security:spring-security-test")
  19. }

egdjgwm8

egdjgwm81#

该文档包括Kotlin配置的概述:

  1. import org.springframework.security.config.annotation.web.invoke
  2. @Bean
  3. open fun filterChain(http: HttpSecurity): SecurityFilterChain {
  4. http {
  5. authorizeRequests {
  6. authorize(anyRequest, authenticated)
  7. }
  8. formLogin { }
  9. httpBasic { }
  10. }
  11. return http.build()
  12. }

字符串
此示例使用了KotlinDSL,并包含了HttpSecurityinvoke扩展函数的导入,这是以这种方式使用DSL所必需的。
还要注意的是,这个例子使用了authorizeRequests,但建议使用authorizeHttpRequests。我在文档中使用了filed an issue来改进这个片段。

展开查看全部

相关问题