我想知道是否有人可以帮我解决Angular2和Spring Security之间的问题。让我尽我所能解释我的问题。
我在Angular2中做了一个表单(例如,一个非常简单的表单),在我的登录服务中,我将它发送到我的安全页面。在我的localhost:4200(有角度)我通过POST将我输入的用户名和密码发送到localhost:8080 / login(spring security)。
问题是,当我这样做时,我得到了这个:
XMLHttpRequest无法加载http://localhost:8080/login。重定向 ' http://localhost:8080/login'到' http://localhost:8080/'一直都是 被CORS政策阻止:No' Access-Control-Allow-Origin'标题是 出现在请求的资源上。起源' http://localhost:4200'是 因此不允许访问。
然而,这是因为localhost:8080 / login进行了重定向,在此之后,即使我在Spring代码中的任何地方允许它,CORS策略也会回来。
最麻烦的是,如果我输入了不良凭证(例如用户名:"用户"但是密码:" pasodqki")我得到了这个:
XMLHttpRequest无法加载http://localhost:8080/login。重定向 ' http://localhost:8080/login'到' http://localhost:8080/login?error' 被CORS政策阻止:No' Access-Control-Allow-Origin' 标头出现在请求的资源上。起源 ' http://localhost:4200'因此不允许访问。
当我做对了,我得到了第一个错误,我们可以看到一个重定向到localhost:8080,另一个重定向到localhost:8080 / login?错误,我不知道这是否意味着什么。< / p>
我的所有代码都在这里:MyProjectGithub。如果有人有任何想法,请帮助我,因为我不明白我们如何在Angular和Spring安全之间建立这种联系,而且我在互联网上找不到很多帮助,或者我没有。或许明白...
我的配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().cors();
http.authorizeRequests()
.antMatchers("/*").hasRole("USER")
.and()
.formLogin();
}
@Bean
CorsConfigurationSource corsConfigurationSource() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("http://localhost:4200");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
return source;
}
像这样有效!