在使用SpringBoot+SpringSecurity配置用户登录时,需要配置CorsFilter,如下:

然后在项目启动的时候报一下错误:

10:24:01.010 [restartedMain] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - [refresh,591] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfig': Unsatisfied dependency expressed through field 'corsFilter'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.web.filter.CorsFilter' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
10:24:01.123 [restartedMain] INFO  o.a.c.c.StandardService - [log,173] - Stopping service [Tomcat]
10:24:01.234 [restartedMain] ERROR o.s.b.d.LoggingFailureAnalysisReporter - [report,40] - 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field corsFilter in com.wyj.yjwu.config.SecurityConfig required a bean of type 'org.springframework.web.filter.CorsFilter' that could not be found.

The injection point has the following annotations:
	- @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'org.springframework.web.filter.CorsFilter' in your configuration.

该问题是因为Spring容器中没有找到CorsFilter这个Bean,需要手动配置,如下:

@Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration corsConfiguration = new CorsConfiguration();
        List<String> list = new ArrayList<>();
        list.add("*");
        corsConfiguration.setAllowCredentials(true);
        corsConfiguration.setAllowedOrigins(list);
        corsConfiguration.setExposedHeaders(list);
        corsConfiguration.setAllowedMethods(list);
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }

然后启动项目不再报错。

该问题应该算是一类型题,如果是没有找到对应的Bean的话,都会报这个错,所以只需要对其进行相应的配置就可以了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐