Подтвердить что ты не робот

В чем разница между @EnableWebSecurity и @EnableWebMvcSecurity?

@EnableWebSecurity

Документация JavaDoc:

Добавьте эту аннотацию в класс @Configuration, чтобы иметь конфигурацию Spring Security, определенную в любом WebSecurityConfigurer, или, скорее, путем расширения базового класса WebSecurityConfigurerAdapter и переопределения отдельных методов.

@EnableWebMvcSecurity

Документация JavaDoc:

Добавьте эту аннотацию в класс @Configuration, чтобы конфигурация Spring Security интегрировалась с Spring MVC.

  • Что именно означает "интегрироваться с Spring MVC"? Какое дополнительное поведение я получаю?
  • Я нашел guides и ответы, которые предполагают, что эта аннотация добавляет CSRF Tokens в Spring MVC Forms, это единственное, что он добавляет?
4b9b3361

Ответ 1

Если вы посмотрите на эти классы, @EnableWebMvcSecurity фактически добавляет аннотацию @EnableWebSecurity в WebMvcSecurityConfiguration. Поэтому @EnableWebMvcSecurity делает все, что делает @EnableWebSecurity, и немного больше.

Что еще вы спрашиваете?

Если вы посмотрите WebMvcSecurityConfiguration, вы увидите, что он добавляет AuthenticationPrincipalArgumentResolver, чтобы вы могли получить доступ к основному лицу аутентификации, добавив аннотацию к аргументу метода контроллера. то есть:.

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

Он также интегрируется с Spring Web MVC для добавления маркера CSRF в формы.

Ответ 2

Как и для Spring Безопасность 4.0, @EnableWebMvcSecurity устарела. Замена @EnableWebSecurity, который определит добавление функций Spring MVC основанный на пути к классам.

Чтобы включить Spring Интеграция безопасности с Spring MVC, добавьте @EnableWebSecurity аннотации к вашей конфигурации.

источник