Java 如何在Spring Boot中使用Key斗篷获取当前登录用户?
我在SpringBoot中使用key斗篷保护了一个应用程序,并试图获取当前登录用户的名称 接下来,我试着:Java 如何在Spring Boot中使用Key斗篷获取当前登录用户?,java,spring-boot,spring-security,keycloak,Java,Spring Boot,Spring Security,Keycloak,我在SpringBoot中使用key斗篷保护了一个应用程序,并试图获取当前登录用户的名称 接下来,我试着: public Optional<String> getCurrentUserLogin() { SecurityContext securityContext = SecurityContextHolder.getContext(); return Optional.ofNullable(securityContext.getAuthentication()
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;
});
}
public可选getCurrentUserLogin(){
SecurityContext SecurityContext=SecurityContextHolder.getContext();
返回可选的.ofNullable(securityContext.getAuthentication())
.map(身份验证->{
if(authentication.getPrincipal()实例的keydeposPrincipal){
keydoveprincipal kp=(keydoveprincipal)身份验证。getPrincipal();
返回kp.getKeyDopperSecurityContext().getIdToken().getPreferredUsername();
}
返回null;
});
}
但是没有运气。它给了我一个关于未经检查的演员的警告,但它不起作用
如何让用户使用keydeport登录?仅使用class
keydepaprincipal
,给出警告
参数化类“keydepaprincipal”的原始用法
但它是有效的
[...]
if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
KeycloakPrincipal principal = (KeycloakPrincipal) authentication.getPrincipal();
return principal.getName();
[...]