Kotlin 如何在webflux中端点执行之前创建和持久化自定义用户对象?
我目前正在使用SpringWebFlux开发OAuth2.0资源服务器(RESTAPI) 我已经设置了Spring安全性,可以使用Spring内置的主体类成功地验证用户 问题是: 应用程序需要根据需要存储有关用户的附加信息。 首次访问API的用户不会存储在RESTAPI的内部用户数据库中。现在,我必须检查所提供的主体名称(我可以访问相应的OAuth UUID——存储在授权服务器中的名称)是否已经存在于应用程序数据库中 我希望避免代码重复,在这种情况下,我必须调用一个在每个端点上都能做到这一点的方法 以下是已经奏效的方法:Kotlin 如何在webflux中端点执行之前创建和持久化自定义用户对象?,kotlin,oauth-2.0,spring-webflux,spring-security-oauth2,principal,Kotlin,Oauth 2.0,Spring Webflux,Spring Security Oauth2,Principal,我目前正在使用SpringWebFlux开发OAuth2.0资源服务器(RESTAPI) 我已经设置了Spring安全性,可以使用Spring内置的主体类成功地验证用户 问题是: 应用程序需要根据需要存储有关用户的附加信息。 首次访问API的用户不会存储在RESTAPI的内部用户数据库中。现在,我必须检查所提供的主体名称(我可以访问相应的OAuth UUID——存储在授权服务器中的名称)是否已经存在于应用程序数据库中 我希望避免代码重复,在这种情况下,我必须调用一个在每个端点上都能做到这一点的方
@GetMapping("/secure")
fun secureEndpoint(principal: Principal): ResponseEntity<Void> {
println(principal.name)
// here I would have to check if the user has already been
// created in the database
return ResponseEntity.ok().build()
}
我将非常感谢任何帮助 我应该补充一点:一旦在经过身份验证的端点之前有了一个入口点,我就知道该做什么了。我只是不知道在春天怎么做才对。你试过什么?我看不出你在allI写过任何代码,我不知道从哪里开始。我查看了Webfilters,但老实说,我认为它没有很好的文档记录。我需要的是guidance@BoristheSpider那么我的问题是:我要找的是这些过滤器中的哪一个?
@Bean
fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
val cookieServerCsrfTokenRepository = CookieServerCsrfTokenRepository()
cookieServerCsrfTokenRepository.setCookieHttpOnly(false)
http.authorizeExchange()
.pathMatchers("/**").permitAll()
.pathMatchers("/secure/**").authenticated()
.and()
.oauth2ResourceServer()
.jwt()
http.csrf()
.csrfTokenRepository(cookieServerCsrfTokenRepository)
return http.build()
}