Собственно вопрос. Есть аутентификация посредством JWT angularjs.
На данные момент все работает ок, после авторизации с api возвращается токен вида:
eyxxxGciOiJSUzI1NiIsInR5cCI6IkpXUyJ9.eyJleHAiOjE0NDI0MDM3NTgsImVtYWlsIjoid2VibWFzdGVyQGdlc2RpbmV0LmNv........
записывается в куки и работает заголовком во всех запросах к api.
Проблема в том, что когда истекает жизнь токена, необходимо перелогиниваться.
Почитав просторы интернета, узнал, что есть такая тема в jwt как refresh токен, который обновляется или обновляет access token до его окончания времени.
Почитал довольно полезную статью на хабре
https://habrahabr.ru/post/267349/ и доку по jwt
https://github.com/auth0/auth0-angular/blob/master... , и не смог разобраться в их примере по resfresh токену. Не догнал откуда его изначально взять.
Можно более детально узнать, как обновлять access token через refresh?
Как реализовать запрос на refresh через нужный промежуток времени и т.д.
Было бы идеально на рабочем примере объяснить.
P.S: Частично реализовал схему, но токен обновляется только после того как время выходит, и любой запрос к серверу выдает 401 и разлогинивает так, как я делал проверку на $stateChangeStart, при переходе по страницам все ок. Знаю, что не верно но все же.
Имеется запрос типо api/refresh для обновления токена, только вопрос в том, как правильно реализовать идею обновления токена, до его окончания?
На данный момент, что есть:
var token = AuthUser.getToken();
var dateToken = $filter('date')(jwtHelper.getTokenExpirationDate(token), 'dd.MM.yyyy HH:mm:ss');
var dayDate = $filter('date')(new Date(), 'dd.MM.yyyy HH:mm:ss');
if (dayDate > dateToken) {
return $http({
url: API.url + '/api/refresh',
skipAuthorization: true,
method: 'GET',
}).then(function(response) {
var id_token = response.data.token;
AuthUser.setToken(id_token);
return id_token;
});