@EnableWebSecurity和@EnableWebMvcSecurity有什么区别?

时间:2015-01-12 16:07:53

标签: java spring spring-mvc spring-security

@EnableWebSecurity

JavaDoc文档:

  

将此注释添加到@Configuration类,以便在任何Spring Security中定义WebSecurityConfigurer配置,或者更可能通过扩展WebSecurityConfigurerAdapter基类并覆盖单个方法来实现。< / p>

@EnableWebMvcSecurity

JavaDoc文档:

  

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

  • &#39; 与Spring MVC集成&#39;到底是什么意思? ?我能得到什么额外的行为?
  • 我找到guides&amp; answers,这表示此注释会将CSRF Tokens添加到Spring MVC表单,这是它添加的唯一内容吗?

2 个答案:

答案 0 :(得分:46)

  

自Spring Security 4.0起,@EnableWebMvcSecurity已弃用。替换是   @EnableWebSecurity将确定添加Spring MVC功能   基于类路径。

     

要启用Spring Security与Spring MVC的集成,请添加   @EnableWebSecurity 注释到您的配置。

source

答案 1 :(得分:37)

如果您查看这些课程,@EnableWebMvcSecurity实际上会在@EnableWebSecurity中添加WebMvcSecurityConfiguration注释。因此,@EnableWebMvcSecurity执行@EnableWebSecurity所做的所有操作,并执行更多操作。

你还要问什么?

如果查看WebMvcSecurityConfiguration,您会看到它添加了AuthenticationPrincipalArgumentResolver,以便您可以通过向控制器方法参数添加注释来访问身份验证主体。即:

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

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