Java angularjs+;弹簧靴&x2B;spring security部分安全应用程序

Java angularjs+;弹簧靴&x2B;spring security部分安全应用程序,java,angularjs,spring-mvc,spring-security,spring-boot,Java,Angularjs,Spring Mvc,Spring Security,Spring Boot,我已经开始开发一个小的单页应用程序。这是一家典型的网上商店。我需要用户只登录支付过程,以便每个访问者都可以访问应用程序的其余部分 我正在使用AngularJS和前端路由,使用Spring数据的Spring引导和后端的Spring安全性 现在,为了保护一些页面,我“欺骗”了他们: 在我的控制器上运行: @Controller public class MainController { private static final Logger log = LoggerFactory.getLog

我已经开始开发一个小的单页应用程序。这是一家典型的网上商店。我需要用户只登录支付过程,以便每个访问者都可以访问应用程序的其余部分

我正在使用AngularJS和前端路由,使用Spring数据的Spring引导和后端的Spring安全性

现在,为了保护一些页面,我“欺骗”了他们:

在我的控制器上运行:

@Controller
public class MainController {

  private static final Logger log = LoggerFactory.getLogger(MainController.class);



  @RequestMapping(value="/admin/addproductform", method=RequestMethod.GET)
  public String addProductForm(){
      return "/templates/admin/admin_add_product.html";
  }
}
这是我的安全配置:

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
    .formLogin()
        .loginPage("/templates/login.html").permitAll()
    .and()
    .logout().permitAll()
    .and()
    .authorizeRequests()
        .antMatchers("/admin/**").hasRole("ADMIN")
    .and()
    .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
    .csrf()
    .disable();
//      had to disable csrf, because it screwed with the file upload
//      .csrfTokenRepository(csrfTokenRepository());
}

//  private CsrfTokenRepository csrfTokenRepository() {
//    HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
//    repository.setHeaderName("X-XSRF-TOKEN");
//    return repository;
//  }

}
现在我的问题是,这种方法通常是错误的吗?甚至可以用AngularJs和Spring Security保护一些页面吗


提前感谢

所以您的策略是确保对Angular中使用的模板的访问?这可能行得通,但您的控制器URL与模板URL不匹配,因此我感到困惑,您需要一些客户端代码来处理未经授权的情况。你看过这个博客系列吗:(你的CSRF问题可能在第二部分中得到了解决)?你是对的,这解决了为什么它不起作用的问题<代码>代码。当(“/admin/addproduct”{templateUrl:“/admin/addproductform”,controller:”})时,我会编辑这个问题。但我这里的实际问题是这是否是一个好的实现。我是AngularJS的新手,但曾与Spring MVC合作过。博客系列是我真正觉得有用的一件事,但它涵盖了一个完全安全的页面,而不是一个局部页面(如果我错了,请纠正我)。csrf问题现在并不重要,因为我倾向于改变文件上传的工作方式。除此之外,我还使用了博客系列中描述的csrf实现,我还有另一个关于访问决策的博客。基本上,我相信除了在客户机中实现一些逻辑之外,您别无选择,但这并不意味着您也不需要在服务器中进行保护。
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
    .formLogin()
        .loginPage("/templates/login.html").permitAll()
    .and()
    .logout().permitAll()
    .and()
    .authorizeRequests()
        .antMatchers("/admin/**").hasRole("ADMIN")
    .and()
    .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
    .csrf()
    .disable();
//      had to disable csrf, because it screwed with the file upload
//      .csrfTokenRepository(csrfTokenRepository());
}

//  private CsrfTokenRepository csrfTokenRepository() {
//    HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
//    repository.setHeaderName("X-XSRF-TOKEN");
//    return repository;
//  }

}