Выбор ответа Middle Spring Security обновлено
hasRole и hasAuthority
Вопрос
У пользователя authority ADMIN (без префикса). Правило .hasRole("ADMIN"). Что будет?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 403: hasRole ищет authority ROLEADMIN. hasRole("ADMIN") добавляет префикс и проверяет ROLEADMIN.
Варианты ответа
- Доступ разрешён: hasRole и hasAuthority одинаковы
- Ошибка при старте
- 403: hasRole ищет authority
ROLE_ADMINправильный ответ - Доступ разрешён, но с предупреждением в логе
Разбор
hasRole("ADMIN") добавляет префикс и проверяет ROLE_ADMIN. Для authority без префикса нужен hasAuthority("ADMIN"). Это одна из самых частых причин «непонятного» 403, особенно когда роли приходят из JWT claim scope или roles.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.