[英]How to get current user from ReactiveSecurityContextHolder in WebFlux?
通常在使用 Spring 引導時,獲取當前登錄用戶的常用方法是使用:
SecurityContextHolder.getContext();
這在使用響應式編程和 Java 中的 Mono 時不起作用,因為它們不屬於同一個線程。 建議使用:
ReactiveSecurityContextHolder.getContext()
我已經閱讀了許多文章、StackOverflow 問題和答案,但從未找到關於如何完全集成 ReactiveSecurityContextHolder 的完整解釋或示例。
任何幫助將不勝感激。
假設安全配置正確。 Spring 安全性在訂閱期間初始化ReactiveSecurityContextHolder
,以便您可以使用ReactiveSecurityContextHolder.getContext()
在此鏈中訪問它:
@GetMapping
Mono<Void> getItems() {
return ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication)
.doOnNext(auth -> log.info(String.valueOf(auth)))
.then();
}
樣品 output:
UsernamePasswordAuthenticationToken [Principal=org.springframework.security.core.userdetails.User [Username=admin, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, credentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]], Credentials=[PROTECTED],Authenticated=true,Details=null,Granted Authorities=[ROLE_ADMIN]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.