Выбор ответа Middle Spring Security спрашивают часто обновлено

Порядок правил authorizeHttpRequests

Вопрос

Правила: .requestMatchers("/api/**").authenticated(), затем .requestMatchers("/api/admin/**").hasRole("ADMIN"). Что получит обычный вошедший пользователь на /api/admin/users?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Доступ: первое совпавшее /api/ разрешило. Правила проверяются сверху вниз до первого совпадения. /api/ совпадает с /api/admin/users и требует только аутентификации, до правила с ролью дело не доходит.

Варианты ответа

  1. 403: правило для admin точнее и побеждает
  2. Доступ: первое совпавшее /api/** разрешилоправильный ответ
  3. 401: нужна повторная аутентификация
  4. Ошибку при старте из-за пересечения правил

Разбор

Правила проверяются сверху вниз до первого совпадения. /api/** совпадает с /api/admin/users и требует только аутентификации, до правила с ролью дело не доходит. Узкие правила ставят выше широких. Spring Security 6 ловит некоторые явно недостижимые конфигурации, но этот порядок валиден и просто открывает админку.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.