Spring MVC: извлечение заголовка Http-запроса

#java #spring #spring-security #oauth-2.0

#java #весна #spring-безопасность #oauth-2.0

Вопрос:

Я реализовал архитектуру микросервисов. Перед доступом к каждой микросервисе запрос проходит через шлюз, который проверяет аутентификацию и в процессе добавляет X-User заголовок, содержащий идентификатор пользователя.

В каждой из моих микросервисов я хотел бы иметь возможность извлекать this user ( X-User ) элегантным способом: без добавления HttpRequest / @RequestHeader ко всем моим контроллерам и передачи его службам и т.д.

Использование чего-то вроде « SecurityContextHolder.getContext().getAuthentication().getUserId(); » было бы идеальным, но поскольку я не управляю аутентификацией в своих микросервисах, это невозможно.

Комментарии:

1. Вы могли бы использовать пользовательский фильтр

2. В вашем вопросе не хватает ясности, где вы хотите получить значение и как вы собираетесь его использовать (по крайней мере, где)?

Ответ №1:

Вы должны быть в состоянии:

  1. внедрите сервлет Filter (подробнее см. В Этой статье Baeldung), который получает userId данные из ServletRequest и сохраняет их в a ThreadLocal (подробнее см. В Этой статье Baeldung).
  2. извлеките это ThreadLocal из любого класса, который нуждался бы в userId

Удачи!