Мое приложение имеет несколько микросервисов, включая: Auth, Game и Group. Когда я нажимаю кнопку на передней панели (Play), я вызываю метод api Group rest, скажем, foo (). Чтобы реализовать foo () внутри группы, мне нужно GET вызвать Game rest api, но он защищен.
При входе в приложение React я получаю токен JWT из / login (Auth) и сохраняю его в LocalStorage. Затем я успешно использую его для вызова foo () из Group, но в реализации foo () мне также нужно использовать токен jwt, чтобы иметь возможность получать информацию из Game.
@Configuration
//+component scans...
public class GroupConfiguration {
@Bean
@LoadBalanced
public WebClient.Builder buildWebClientBuilder() {
return WebClient.builder();
}
}
@RestController
@RequestMapping("/groups")
public class Controller {
private final Logger logger = LogManager.getLogger();
@Autowired
private WebClient.Builder webClientBuilder;
private int getMinimumNumberOfPlayers(int gameId) {
try {
return webClientBuilder.build()
.get()
.uri("http://game-service/games/minimumNumberOfPlayers/2")
.retrieve()
.bodyToMono(Integer.class)
.block();
} catch (NullPointerException|WebClientResponseException e) {
e.printStackTrace();
return 0;
}
}
...
// foo() frontend calls foo(). foo it's using getMinimumNumberOfPlayers
getMinimumNumberOfPlayers () используется в методе foo () из группы. Предполагается получить минимальное количество игроков в игре по идентификатору, но микросервис игры защищен jwt, и я получаю несанкционированную ошибку.
Поэтому мой вопрос заключается в том, как сделать так, чтобы микросервис группы мог вызывать Game микросервис.
Спасибо.
Редактировать: Перехватчик RestTemplate Вот как я это решил.