Я использую Spring Cloud Gateway и Spring Security в проекте Spring Boot (версия 2.2.6). У меня есть настраиваемый предварительный фильтр, который должен добавлять заголовки к запросу, прежде чем он переадресует запрос нижестоящим службам. Предварительный фильтр должен прочитать объект аутентификации Spring Security, чтобы получить полномочия, прежде чем он сможет добавить заголовки (ему необходимо выполнить некоторый поиск на основе полномочий). Поскольку Spring Cloud Gateway является реактивным, я не могу использовать статический класс SecurityContextHolder. Ссылаясь на этот вопрос Stackoverflow, ReactiveSecurityContextHolder.getContext () пуст, но работает @AutContext (). >, Я попробовал следующее в моем настраиваемом предварительном фильтре:
ReactiveSecurityContextHolder.getContext().map(ctx -> ctx.getAuthentication()).block()
Как опубликовано OP, он не работает и возвращает значение null. Было несколько предложений по созданию настраиваемого фильтра в этой проблеме с stackoverflow. Но я не пробовал, так как хочу получить доступ к объекту аутентификации из настраиваемого фильтра. Нет ли прямого способа получить объект аутентификации в настраиваемом фильтре Spring Cloud Gateway?
Спасибо