[英]How to get the current logged in user in Spring Boot with Keycloak?
我使用 Keycloak 在 Spring Boot 中保護了一個應用程序,我正在嘗試獲取當前登錄用戶的名稱。
按照這個問題的答案,我嘗試了:
public Optional<String> getCurrentUserLogin() {
SecurityContext securityContext = SecurityContextHolder.getContext();
return Optional.ofNullable(securityContext.getAuthentication())
.map(authentication -> {
if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) authentication.getPrincipal();
return kp.getKeycloakSecurityContext().getIdToken().getPreferredUsername();
}
return null;
});
}
但沒有運氣。 它給了我一個關於未經檢查的演員的警告,但它不起作用!
如何讓用戶使用 Keycloak 登錄?
僅使用 class KeycloakPrincipal
,給出警告
參數化 class 'KeycloakPrincipal' 的原始使用
但它有效!
[...]
if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
KeycloakPrincipal principal = (KeycloakPrincipal) authentication.getPrincipal();
return principal.getName();
[...]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.