@PreAuthorize vs antMatchers

Мне надо сделать так, что на определённые эндпоинты могли попасть только некоторые роли. Это можно сделать в конфигурационном классе при помощи antMatchers:

http
    .authorizeRequests()
    .antMatchers("/profile").hasRole(Role.USER.name());

Или в контроллере при помощи @PreAuthorize:

@PreAuthorize("hasRole('USER')")
@GetMapping("/profile")
public void foo() {
    ...
}

Я хочу понять разницу между этими двумя подходами (ну кроме того, что, очевидно, вариант с @PreAuthorize более гибкий). Вообще я нашёл ответ на англоязычном stackoverflow, но ввиду того, что у меня очень плохой английский, а автоматический перевод оказался жутко отвратительным, я так ничего и не понял.

Итак, вопросы:

  1. В ответе, который доступен по ссылке выше, человек пишет: «Веб-безопасность и безопасность методов - это два разных способа защиты вашего приложения», но я вообще не могу понять смысл этого высказывания. Существуют какие-то конкретные определение для терминов Веб-безопасность и безопасность методов? Если нет, то что отвечающий имел в виду?

  2. Что лучше использовать, @PreAuthorize или antMatchers и почему?

  3. Можно ли использовать оба подхода одновременно и имеет ли это смысл?


Ответы (0 шт):