Spring Security Angular 2

时间:2017-03-26 21:28:20

标签: java spring angular spring-security cors

我想知道是否有人可以帮我解决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;
}

像这样有效!

0 个答案:

没有答案