Spring Security注销不适用于Spring 4 CORS


问题内容

最近,我在 Spring 4中* 尝试了新的内置 CORS-Support 。这个功能很棒,我想在 Spring Boot /
AngularJS
应用程序中实现它。
* __

所有请求都可以正常工作,但是我无法注销用户,因为OPTIONS-Request /logout是由 Spring Security
处理的。

可以OPTIONSSpring Security 之前处理-Request,还是应该在其中附加 CORS-
Headers
LogoutSuccessHandler


问题答案:

使用Spring
Security时,建议使用CorsFilter。您将要确保订购CorsFilterSpring
Security之前的产品FilterChainProxy

对于此问题,可能只需要注册注销URL即可。例如:

@Bean
public CorsFilter corsFilter() {

    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true); // you USUALLY want this
    // likely you should limit this to specific origins
    config.addAllowedOrigin("*"); 
    config.addAllowedHeader("*");
    config.addAllowedMethod("GET");
    config.addAllowedMethod("POST");
    config.addAllowedMethod("PUT");
    source.registerCorsConfiguration("/logout", config);
    return new CorsFilter(source);
}