【问题标题】:CORS spring security filter vs WebMvcConfigurer.addCorsMappingsCORS spring 安全过滤器与 WebMvcConfigurer.addCorsMappings
【发布时间】:2020-12-05 02:57:39
【问题描述】:

configure 类的configure 方法中的cors() 过滤器和创建WebMvcConfigurer 的bean 并覆盖addCorsMappings 方法有什么区别?我们什么时候用哪个?谁能解释一下?

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("http://localhost:3000");
        }
    };
}

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and()
                .csrf().disable()
                .authorizeRequests()
                .mvcMatchers("/rest/**").authenticated()
                .anyRequest().permitAll()
                .and()
          .oauth2ResourceServer().jwt().jwtAuthenticationConverter(this.jwtAuthenticationConverter())
        ;
    }

}

【问题讨论】:

标签: spring spring-security cors


【解决方案1】:

Spring Web MVC

WebMvcConfigurerSpring Web MVC 库的一部分。使用addCorsMappings 配置 CORS 会将 CORS 添加到 Spring Web MVC 处理的所有 URL,请参阅1.7.2. Processing

Spring MVC HandlerMapping 实现提供了对 CORS 的内置支持。在成功将请求映射到处理程序后,HandlerMapping 实现会检查给定请求和处理程序的 CORS 配置并采取进一步的措施。

如果没有使用 Spring Security(非安全应用程序)或并非所有 Spring Web MVC URL 都由 Spring Security 处理(某些 ULR 不安全),则必须使用它。

您不能将它用于非 Spring Web MVC URL,例如 JSF、Servlet、JAX-WS、JAX-RS、...

Spring 安全性

WebSecurityConfigurerAdapter Spring Security 库的一部分。使用cors() 配置 CORS 会将 CORS 添加到 Spring Security 处理的所有 URL,请参阅15.8. CORS

Spring Framework 为 CORS 提供一流的支持。 CORS 必须在 Spring Security 之前处理,因为飞行前请求将不包含任何 cookie(即JSESSIONID)。如果请求中不包含任何 cookie 且 Spring Security 优先,则请求将确定用户未通过身份验证(因为请求中没有 cookie)并拒绝它。

确保首先处理 CORS 的最简单方法是使用 CorsFilter

如果你使用 Spring Security,你必须使用它。

如果你同时使用 Spring Web MVC 和 Spring Security 可以共享配置,见15.8. CORS:

如果您使用 Spring MVC 的 CORS 支持,则可以省略指定 CorsConfigurationSource,Spring Security 将利用提供给 Spring MVC 的 CORS 配置。

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 2017-03-18
    • 2015-04-01
    • 2023-03-29
    相关资源
    最近更新 更多