Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring Boot中使用Key斗篷获取当前登录用户?_Java_Spring Boot_Spring Security_Keycloak - Fatal编程技术网

Java 如何在Spring Boot中使用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()

我在SpringBoot中使用key斗篷保护了一个应用程序,并试图获取当前登录用户的名称

接下来,我试着:

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();
[...]