Я использую Spring-cloud-gateway в качестве ResourceServer и для конкретной реализации хочу извлечь некоторую информацию, например, роли пользователя, из токена доступа JWT, который он получает, к нисходящим сервисам.
I сделал это в реализации GatewayFliter, получив принципал от обмена и приведя его к Аутентификации, а затем получив роли пользователя из токена.
Но теперь я хочу сделать это в GlobalFilter, чтобы я мог переместить эту функциональность «безопасности» на глобальный уровень, но тот же блок кода из GatewayFilter не работает в GlobalFilter.
Это кодовый блок, на который я ссылался:
exchange.getPrincipal()
.filter(principal -> principal instanceof Authentication)
.cast(Authentication.class)
.map(authentication->extractAuthoritiesAndSetThatToRequest(exchange,
authentication))
.defaultIfEmpty(exchange).flatMap(chain::filter);
Вышеупомянутый блок работает в классе, который расширяет AbstractGatewayFilterFactory , и метод extractAuthoritiesAndSetThatToRequest выполняется, но не в классе, который реализует GlobalFilter .
Я хочу такую же функциональность в GlobalFilter.
Возможно, я что-то упускаю. Не могли бы вы помочь?