Я создаю угловое приложение, которое поддерживает аутентификацию JWT.Я создаю свой JWT-сервер, используя Spring Boot.Пользователь предоставляет свои учетные данные для аутентификации.После успешной аутентификации пользователю будет отправлен ответ, содержащий маркер доступа и аутентификацию.В моем токене доступа JWT содержится значение exp, содержащее срок жизни токена.Токен обновления сохраняется в БД.Чтобы получить новый токен доступа, вы должны отправить запрос с этим заголовком --- >>> X-Auth: refreshToken <<< ---, чтобы получить новый токен доступа.Я реализовал функцию, которая будет повторно отправлять запрос на токен доступа, используя токен обновления.Я пытался реализовать функцию для запуска функции в глобальном масштабе, но безрезультатно.Я хотел бы узнать, есть ли способ, как я мог бы запустить функцию один раз глобально в моем угловом приложении. </p>
/***Login sample request***/
{
"password": "secret123",
"username": "nkengbeza"
}
/***Login sample response***/
{
"access_token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJua2VuZ2JlemEiLCJhdXRoIjpbeyJhdXRob3JpdHkiOiJBRE1JTiJ9XSwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImlhdCI6MTU0ODY2OTE0MSwiZXhwIjoxNTQ4NjcyNzQxfQ.oaWOIaeMqLg35unM82bcNg88ga030m5J1k7E5EM2O0s",
"refresh_token": "a102c7a063c7f149bcb276eadf83c0c61659ff9b37c0a8ab7d29e92c08ac94e7aa99abc5e9a3c1c59da4e66f1ada0c6a02dca2f577a4aa3f81885c73f5a879d1"
}
/***Request for an access token using a valid refresh token***/
reLogin() {
(async () => {
const resp = await fetch(AppRoutes.RELOAD_AUTH, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-Auth': this.getAuth().refreshToken
}
});
if (resp.status !== 200) {
this.doLogout();
}
const content = await resp.json();
const accessToken = content.access_token;
const tokenInfo = this.getDecodedAccessToken(accessToken); // decode token
const auth = new Auth();
auth.refreshToken = content.refresh_token;
auth.role = tokenInfo.auth[0];
const expireDate = tokenInfo.exp; // get token expiration dateTime
this.setAccessToken(accessToken);
this.setAuth(auth);
})();
}