Первая — для аутентификации:
Код: Выделить всё
@Bean
@Order(10)
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorizeRequests ->
authorizeRequests
.requestMatchers(createAntRequestMatchers(whitelist))
.permitAll().anyRequest()
.authenticated()
)
.oauth2ResourceServer( ...)
return http.build();
}
Код: Выделить всё
@Bean
@Order(100)
public SecurityFilterChain filterChain(HttpSecurity http, ResourceFilter resourceFilter) throws Exception {
return http
.authorizeHttpRequests(authorizeRequests ->
authorizeRequests
.requestMatchers(createAntRequestMatchers(whitelist))
.permitAll().anyRequest()
.authenticated()
).addFilterAfter(resourceFilter, SessionManagementFilter.class).build();
}
После обновления до Spring-Boot 3.4.1 контекст Spring больше не запускается с сообщением об ошибке
Цепочка фильтров, соответствующая любому запросу [DefaultSecurityFilterChain, определенная как 'filterChain' в..., уже настроена, а это означает, что эта цепочка фильтров... никогда не будет вызвана. Используйте HttpSecurity#securityMatcher, чтобы убедиться, что для «любого запроса» настроена только одна цепочка фильтров и что цепочка фильтров «любой запрос» публикуется последней.
После того, как я добавлю в каждую конфигурацию requestMatcher (все запросы)
Код: Выделить всё
http.securityMatcher("/**").authorizeHttpRequests(...
, у меня возникнут сомнения относительно моего решения.
Что ты имеешь в виду?
Подробнее здесь: https://stackoverflow.com/questions/793 ... atches-any