WebSecurityConfigurerAdapter
类的configure
方法中的cors()
过滤器与WebMvcConfigurer
的创建bean和重写addCorsMappings
方法有什么区别?当我们使用哪个?有人能解释一下吗?
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:3000");
}
};
}
vs
@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());
}
}
1条答案
按热度按时间3zwjbxry1#
Spring Web MVC
WebMvcConfigurer
是Spring Web MVC库的一部分。使用addCorsMappings
配置CORS会将CORS添加到Spring Web MVC处理的所有URL,请参见1.7.2。加工:Spring MVC
HandlerMapping
实现提供了对CORS的内置支持。在成功地将请求Map到处理程序之后,HandlerMapping
实现检查给定请求和处理程序的CORS配置,并采取进一步的操作。(For细粒度的CORS配置,您可以使用
@CrossOrigin
。)如果没有使用Spring Security(非安全应用程序)或并非所有Spring Web MVC URL都由Spring Security处理(一些ULR是不安全的),则必须使用它。
您不能将其用于非Spring Web MVC URL,如JSF,Servlet,JAX-WS,JAX-RS等。
Spring Security
WebSecurityConfigurerAdapter
是Spring Security库的一部分。使用cors()
配置CORS会将CORS添加到Spring Security处理的所有URL,请参见15.8。CORS:Spring Framework为CORS提供了一流的支持。CORS必须在Spring Security之前处理,因为pre-flight请求将不包含任何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配置。