Поскольку вы используете IHttpClinetFactory
(и при условии, что вы также используете Typed Client ), вы можете создать свой собственный HttpMessageHandler , который будет запускаться до любого запроса, сделанного вашимTyped Client
и свяжите его с вашим typed client
через DI следующим образом:
services.AddHttpClient<IServiceContract, ServiceImplementation>()
.AddHttpMessageHandler<TokenHandler>();
Внутри этого TokenHandler
вы можете проверить, есть ли в запросе токен в заголовках или нет.Если не проверять кэш (Memory Cache) на наличие доступных токенов, то проверьте время жизни токена.
Если токен истек или в кэше нет такого токена, введите новый токен и сохраните его.в кеше.
Я уверен, что есть лучшие способы, но я бы так и сделал.
Примечание: Если ваше приложение распределено по нескольким серверамзатем используйте Distributed Cache вместо Memory Cache .Вы можете добавить любой легко через DI.