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
Spring boot io.undertow.servlet.util.IteratorEnumeration不能强制转换为java.lang.String_Spring Boot_Spring Security_Java 8 - Fatal编程技术网

Spring boot io.undertow.servlet.util.IteratorEnumeration不能强制转换为java.lang.String

Spring boot io.undertow.servlet.util.IteratorEnumeration不能强制转换为java.lang.String,spring-boot,spring-security,java-8,Spring Boot,Spring Security,Java 8,我正在尝试通过登录从标头中发送的API密钥对用户进行身份验证,没有任何用户详细信息。然后我得到一个强制转换异常,因为我试图将主体强制转换为字符串 我尝试在SecurityConfig类中获取头,但没有成功。我还尝试在自定义过滤器中获取它,这就是当前解决方案的位置 @Bean public APIKeyAuthFilter authFilter() { APIKeyAuthFilter filter = new APIKeyAuthFilter(principalReque

我正在尝试通过登录从标头中发送的API密钥对用户进行身份验证,没有任何用户详细信息。然后我得到一个强制转换异常,因为我试图将主体强制转换为字符串

我尝试在SecurityConfig类中获取头,但没有成功。我还尝试在自定义过滤器中获取它,这就是当前解决方案的位置

@Bean
    public APIKeyAuthFilter authFilter() {
        APIKeyAuthFilter filter = new APIKeyAuthFilter(principalRequestHeader);
        filter.setAuthenticationManager(authentication -> {
            String principal = (String) authentication.getPrincipal();
            if (!principalRequestValue.equals(principal)){
                throw new BadCredentialsException("The API key was not found or not the expected value.");
            }
            authentication.setAuthenticated(true);
            return authentication;
        });
        return filter;
    }
我希望能够获取标题并检查值以与现有键进行比较,但是,我得到了以下异常
“message”:“io.undertow.servlet.util.IteratorEnumeration不能强制转换为java.lang.String”,
“跟踪”:“java.lang.ClassCastException:io.undertow.servlet.util.IteratorEnumeration不能强制转换为java.lang.String\n\t uk.co.nesistec.contractpicturechallenge.config.APISecurityConfig.lambda$authFilter$0(APISecurityConfig.java:46)

我从另一个问题中得到了示例代码。

我发现我只需要另一个类来注册安全过滤器

import org.springframework.security.web.context
            .AbstractSecurityWebApplicationInitializer;
public class SpringSecurityInitializer
            extends AbstractSecurityWebApplicationInitializer {
    //no code needed
}

这是这个场景的完整示例,适用于任何需要它的人。

我发现我只需要另一个类来注册安全过滤器

import org.springframework.security.web.context
            .AbstractSecurityWebApplicationInitializer;
public class SpringSecurityInitializer
            extends AbstractSecurityWebApplicationInitializer {
    //no code needed
}
这是这个场景的完整示例,适用于任何需要它的人