我正在尝试使用 Spring Boot 3.1.5 创建 securityFilterChain 方法
这是我所拥有的:
@Bean
@Throws(java.lang.Exception::class)
fun securityFilterChain(http: HttpSecurity): SecurityFilterChain? {
http
.authorizeHttpRequests(
Customizer<AuthorizationManagerRequestMatcherRegistry> { authorizeHttpRequests: AuthorizationManagerRequestMatcherRegistry ->
authorizeHttpRequests
.requestMatchers("/**").hasRole("USER")
}
)
return http.build()
}
不幸的是,我收到此编译错误:“应为外部类指定类型参数。使用完整的类名来指定它们。”
任何人都可以指导正确的方向吗?
这是我尝试过的其他方法:
@Bean
@Throws(Exception::class)
fun filterChain(http: HttpSecurity): SecurityFilterChain {
http.authorizeHttpRequests((requests) -> requests
.requestMatchers("/users/registration").permitAll())
return http.build()
}
但这也不能编译。
以下是项目依赖项:
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")
}
该文档包含Kotlin 配置的概述:
此示例使用 Kotlin DSL,并包含对以这种方式使用 DSL 所需的
invoke
扩展函数的导入。HttpSecurity
另请注意,本示例使用
authorizeRequests
但建议使用authorizeHttpRequests
. 我已经提交了一个问题来改进文档中的此代码片段。