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!
。 我如何检索登录用户的名称并显示该消息? 另外,有没有更好的“科特林”方式来实施这个例子?