Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为具有协同路由的反应式kotlin应用程序启用ReactiveMethodSecurity_Kotlin_Spring Security_Project Reactor_Kotlin Coroutines - Fatal编程技术网

为具有协同路由的反应式kotlin应用程序启用ReactiveMethodSecurity

为具有协同路由的反应式kotlin应用程序启用ReactiveMethodSecurity,kotlin,spring-security,project-reactor,kotlin-coroutines,Kotlin,Spring Security,Project Reactor,Kotlin Coroutines,假设我有一个用Kotlin编写的spring引导应用程序(2.4.1),并使用协同程序实现反应性。我有意识地避免使用反应堆的Mono/Flux,而是使用具有暂停功能的协同程序。我需要从Spring Security设置方法安全性,以便使用@PreAuthorized注释。 这是我的控制器: @RestController @交叉原点(原点=arrayOf(“*”)) 类SearchController(专用val searchService:searchService){ @预授权(“hasRo

假设我有一个用Kotlin编写的spring引导应用程序(2.4.1),并使用协同程序实现反应性。我有意识地避免使用反应堆的Mono/Flux,而是使用具有暂停功能的协同程序。我需要从Spring Security设置方法安全性,以便使用
@PreAuthorized
注释。 这是我的控制器:

@RestController
@交叉原点(原点=arrayOf(“*”))
类SearchController(专用val searchService:searchService){
@预授权(“hasRole('SOME_ROLE'))
@后期映射(“/v3/global entities/{globalentyid}/something”)
暂停有趣的事情(
@路径变量globalEntityId:String,
@RequestBody@Valid something:something
):某物收藏=
searchService.findSomething(globalEntityId,something)
}
和Spring安全配置:

@配置
@EnableReactiveMethodSecurity
@启用WebFluxSecurity
类安全配置{
伴星{
val UNPROTECTED_ENDPOINTS=arrayOf(“/version”、“/health”、“/metrics”)
}
@豆子
fun springSecurityFilterChain(
http:ServerHttpSecurity,
securityContextRepository:ServerSecurityContextRepository
):SecurityWebFilterChain{
返回http.securityContextRepository(securityContextRepository)
.csrf().disable()
.httpBasic().disable()
.授权交易所()
.pathMatchers(HttpMethod.GET,*未受保护的_端点).permitAll()
.anyExchange().authenticated()
.及()
.exceptionHandling().accessDeniedHandler(accessDeniedHandler())
.及()
.build()
}
}
当我尝试测试端点时,出现以下错误:

java.lang.IllegalStateException: The returnType class java.lang.Object on public java.lang.Object com....SearchController.something(java.lang.String,com...Something,kotlin.coroutines.Continuation) must return an instance of org.reactivestreams.Publisher (i.e. Mono / Flux) in order to support Reactor Context
    at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-5.3.2.jar:5.3.2]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
关于如何解决这个问题有什么建议吗

PS这似乎是一个已知的限制,请投票表决,让spring的家伙们修复它