@EnableWebSecurity和@EnableWebMvcSecurity有什么区别?

@EnableWebSecurity

JavaDoc文档:

将此注释添加到@Configuration类中,以使Spring Securityconfiguration在任何WebSecurityConfigurer定义,或者更可能通过扩展WebSecurityConfigurerAdapter基类和重写单个方法。

@EnableWebMvcSecurity

JavaDoc文档:

将此注释添加到@Configuration类,以使Spring Securityconfiguration与Spring MVC集成。

  • 与Spring MVC集成 ”究竟意味着什么? 我能得到什么额外的行为?
  • 我find了指南和答案 ,这表明这个注释添加了CSRF TokensSpring MVC Forms,这是它​​增加的唯一的东西吗?

如果您查看这些类, @EnableWebMvcSecurity实际上在@EnableWebSecurity中添加了@EnableWebSecurity注释。 因此, @EnableWebMvcSecurity执行@EnableWebMvcSecurity所做的一切, @EnableWebSecurity一点。

你还问什么?

如果您查看WebMvcSecurityConfiguration ,您将看到它添加了一个AuthenticationPrincipalArgumentResolver以便您可以通过向控制器方法参数添加批注来访问authentication主体。 即:

 public String show(@AuthenticationPrincipal CustomUser customUser) { // do something with CustomUser return "view"; } 

它还与Spring Web MVC集成,为表单添加一个CSRF令牌。

从Spring Security 4.0开始,不推荐使用@EnableWebMvcSecurity 。 replace是@EnableWebSecurity将决定添加基于类path的Spring MVCfunction。

为了使Spring Security与Spring MVC集成,将 @EnableWebSecurity 注释 添加 到您的configuration中。

资源