В Spring Boot у меня есть следующий микросервис, которому необходим объект Principal для доступа к зарегистрированной информации пользователя:
@RequestMapping(value="/circular-save")
public Boolean saveCircularView(HttpServletRequest request, Principal principal, HttpSession session, Locale locale, ModelAndView mav,
@ModelAttribute CircularsBean souqBean) {
System.out.println( "circular-save microservice Called...........principal="+principal);
//some user related code here that depends on principal
}
Вывод:
circular-save microservice Called.....................principal=null
Я звоню вышеуказанный микросервис выглядит следующим образом:
System.out.println("Will call circulars with principal:"+principal.getName());
restTemplate.getForObject("http://localhost:8081/circular-save", Boolean.class);
Вывод:
Will call circulars with principal:travelling.salesman
Как видите, основное значение не равно нулю на стороне клиента, но оно равно нулю на сервере сторона. Как правильно передать этот главный объект между микросервисами?
Мое исследование:
Сначала я собирался передать его в json запросе и использовать метод POST, но мне не удалось это сделать, потому что это не POJO, и его невозможно сериализовать .
Я провел дополнительные исследования и нашел эту строку, которую можно написать на стороне сервера.
principal = SecurityContextHolder.getContext().getAuthentication();
К сожалению, вышеупомянутое решение дало мне другой объект, который привел к анонимному пользователю, который отличается от исходного пользователя.
Буду признателен за любую помощь. Спасибо.