Как защитить контроллер по ролям в Spring Security?

Можно ограничить URL через SecurityFilterChain и защитить методы через @PreAuthorize после включения @EnableMethodSecurity. Роли должны проверяться на сервере, а не только скрывать элементы интерфейса.

Короткий ответ

Что ответить на собеседовании

Можно ограничить URL через SecurityFilterChain и защитить методы через @PreAuthorize после включения @EnableMethodSecurity. Роли должны проверяться на сервере, а не только скрывать элементы интерфейса.

Подробный разбор

Ответ с пояснениями

Можно ограничить URL через SecurityFilterChain и защитить методы через @PreAuthorize после включения @EnableMethodSecurity. Роли должны проверяться на сервере, а не только скрывать элементы интерфейса.

Для метода подходит @PreAuthorize("hasRole('ADMIN')"): при стандартной настройке проверяется authority ROLE_ADMIN. hasAuthority('ADMIN') проверяет точную строку ADMIN, это другой контракт. Правила URL должны включать безопасное поведение для остальных маршрутов. Методная защита применяется к Spring-managed вызовам через соответствующую инфраструктуру; отдельно проверяют ownership ресурса, если одной роли недостаточно.

Источник: docs.spring.io.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее