Filter chain
Filter chain (цепочка фильтров) — последовательность проверок, через которые проходит каждый HTTP-запрос, прежде чем дойдёт до контроллера. Это происходит раньше, чем DispatcherServlet (см. тему «DispatcherServlet») вообще получит запрос.
Каждый фильтр решает свою узкую задачу: один проверяет, кто пользователь (аутентификация), другой — может ли он делать то, что запрашивает (авторизация). Если любой фильтр “отклоняет” запрос — он не доходит до контроллера вообще.
Копнуть глубже
Аутентификация vs авторизация — две разные вещи, которые часто путают:
- Аутентификация — «кто ты?» (проверка логина/пароля, токена);
- Авторизация — «что тебе разрешено делать?» (есть ли у тебя нужная роль/право для этого конкретного действия).
Базовая настройка цепочки в современном Spring Security:
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/public/**").permitAll() // не требует авторизации
.requestMatchers("/api/admin/**").hasRole("ADMIN") // только для роли ADMIN
.anyRequest().authenticated()) // остальное — нужна авторизация
.build();
return http.build();
}
Фильтры выполняются строго по порядку — если один из них уже отклонил запрос (например, нет валидного токена), остальные даже не вызываются, запрос сразу возвращается клиенту с ошибкой 401/403.
• разницу аутентификации и авторизации (если дошёл до 2-го слоя).