@PreAuthorize vs antMatchers
Мне надо сделать так, что на определённые эндпоинты могли попасть только некоторые роли. Это можно сделать в конфигурационном классе при помощи antMatchers:
http
.authorizeRequests()
.antMatchers("/profile").hasRole(Role.USER.name());
Или в контроллере при помощи @PreAuthorize:
@PreAuthorize("hasRole('USER')")
@GetMapping("/profile")
public void foo() {
...
}
Я хочу понять разницу между этими двумя подходами (ну кроме того, что, очевидно, вариант с @PreAuthorize более гибкий). Вообще я нашёл ответ на англоязычном stackoverflow, но ввиду того, что у меня очень плохой английский, а автоматический перевод оказался жутко отвратительным, я так ничего и не понял.
Итак, вопросы:
В ответе, который доступен по ссылке выше, человек пишет: «Веб-безопасность и безопасность методов - это два разных способа защиты вашего приложения», но я вообще не могу понять смысл этого высказывания. Существуют какие-то конкретные определение для терминов Веб-безопасность и безопасность методов? Если нет, то что отвечающий имел в виду?
Что лучше использовать,
@PreAuthorizeилиantMatchersи почему?Можно ли использовать оба подхода одновременно и имеет ли это смысл?