БЕСШУМНОЕ ОБНОВЛЕНИЕ
Я предпочитаю обрабатывать это не отдельной HTML-страницей, а с помощью молчаливого ответа на обновление токена на странице index.html. Затем напишите такой код:
if (window.top === window.self) {
// Run the main app
const app = new App();
app.execute();
} else {
// If our SPA is running on an iframe, handle token renewal responses
const app = new IFrameApp();
app.execute();
}
Я считаю, что такой подход позволяет избежать усложнения системы WebPack / сборки. Код для приложения iframe делает очень немногое, кроме получения ответа на молчаливое обновление токена.
СРОК СРОКА
Интересно, почему вы хотите напрямую использовать время истечения срока действия токена доступа. Вы можете получить такое значение:
const user = await this._userManager.getUser();
if (user) {
console.log(user.expires_at);
}
Настоящее требование здесь - убедиться, что вы избегаете ошибок для конечных пользователей, когда вызов API терпит неудачу из-за истекшего токена доступа. Лучше всего с этим справиться с помощью следующих действий:
- Если вызов API завершился неудачно с кодом состояния 401
- Затем попробуйте получить новый токен доступа, обычно через userManager.signInSilent ()
- Затем повторите вызов API с новым токеном доступа.
Поэтому способ вызова API должен иметь вспомогательный класс с некоторой логикой повтора, как в моем примере здесь.
person
Gary Archer
schedule
25.08.2020