使用Spring Security后,$ http请求给出403?

时间:2018-07-05 08:02:24

标签: java angularjs spring-security http-headers http-post

下面是我正在使用的SecurityConfiguration类。

@SpringBootApplication
@RestController
public class WebMvcConfig {
@Configuration
protected static class SecurityConfiguration extends 
WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {


  http.authorizeRequests()
  .antMatchers("/login").permitAll()
  .antMatchers("/**").authenticated()
  .anyRequest().authenticated()
  .and()
  .formLogin().permitAll();
  }
}

启动后,当我点击我的URL(http://localhost:8080/TestApp/)时,它将带我到默认登录页面,当我输入默认用户ID(用户)和密码(打印在控制台上)时,它会通过AngularJS路由,将我带到由“ /” URL映射的index.html页面。我可以在用户界面中导航,但是一旦提交任何$ http请求(我正在尝试POST请求),它就会在浏览器控制台上显示$ 403和我的$ http请求URL。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

错误403 表示您被禁止访问所有资源。

如果检查错误详细信息,则很有可能会收到诸如Expected CSRF token not found之类的消息。

从v4开始,spring security默认启用csrf保护。这是一个好习惯,因为csrf攻击会迫使最终用户在当前已通过身份验证的Web应用程序上执行不需要的操作。

因此,在开发环境中,添加http.csrf().disable();将解决您的问题。但是,当您要转到产品环境时,应该考虑添加csrf令牌。