Reactive Spring 5安全性Kotlin的主要名称

我正在尝试将Reactive Spring Security示例( https://github.com/spring-tips/reactive-security/blob/master/src/main/java/com/example/securitydemo/SecurityDemoApplication.java )转换为Kotlin 。

这是我迄今为止:

WebConfiguration.kt

@Configuration class WebConfiguration { fun message(serverRequest: ServerRequest): Mono<ServerResponse> { val principalPublisher = serverRequest.principal().map { p -> "Hello, " + p.name + "!" } return ServerResponse.ok().body(principalPublisher.toMono()) } @Bean fun routes() = router { GET("/message") { ServerResponse.ok().body(message(it)) } } } 

SecurityConfiguration.kt

 @Configuration @EnableWebFluxSecurity class SecurityConfiguration { @Bean fun userDetailsRepository(): UserDetailsRepository { val user = User.withUsername("user").roles("USER").password("password").build() return MapUserDetailsRepository(user) } @Bean fun security(httpSecurity: HttpSecurity): SecurityWebFilterChain { return httpSecurity .authorizeExchange() .pathMatchers("/users/{username}") .access { mono, context -> mono .map { auth -> auth.name.equals(context.variables["username"]) } .map(::AuthorizationDecision) } .anyExchange().authenticated() .and() .build() } } 

登录后,进入http://localhost:8080/message ,得到的响应是data:而不是Hello, user! 。 我如何检索登录用户的名称并显示该消息? 另外,有没有更好的“科特林”方式来实施这个例子?