Задать вопрос

Angularjs jwt refresh token как реализовать?

Собственно вопрос. Есть аутентификация посредством 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;
          });
  • Вопрос задан
  • 1985 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
art1z
@art1z
Программист-многостаночник в EffectiveSoft
Токен в куки пишется на севере, поэтому и обновлять его нужно там же, тут пример: stackoverflow.com/questions/26580213/implementing-...

Никакой дополнительной магии (refresh) на клиенте не нужно
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы