Я создаю SPA с AngularJS с сообщением службе (JAVA).
Когда пользователь отправляет свое имя пользователя/пароль, служба отправляет обратно оба: токен Acces и токен Refresh. Я пытаюсь обработать: если я получаю ответ со статусом 401, отправьте токен обновления, а затем снова отправьте свой последний запрос. Я попытался сделать это с включением $http, но angular не позволяет включить его в этот перехватчик. Есть ли способ воссоздать исходный запрос с этим параметром ответа, который я получаю?
Что-то вроде:
- Я получаю 401
- сохранить мой запрос
- Если у меня есть токен обновления, отправьте этот токен обновления
- при успешной отправке моего запроса
-
при переадресации ошибок на страницу /login
'use strict'; angular.module('testApp') .factory('authentificationFactory', function($rootScope, $q, $window, $location, CONF) { return { request: function(config) { config.headers = config.headers || {}; if ($window.sessionStorage.token) { config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token; } console.log(config); $rootScope.lastRequest = config; return config; }, response: function(response) { console.log($rootScope.lastRequest); if (response.status === 401) { if ($window.sessionStorage.refreshToken) { //Save, request new token, send old response //if it fails, go to login $location.url('/login'); } else { $location.url('/login'); } } return response || $q.when(response); } }; });
Бонусный вопрос (главный вопрос более важен): Есть два мобильных приложения, которые также подключаются к моей службе, а когда я вхожу в систему из своего веб-приложения, а через несколько мгновений из своего мобильного приложения, мобильное приложение принимает новый токен обновления и токен обновления моего веб-приложения действительны не более. Какой был бы лучший способ справиться с этим?
Спасибо за ваше время, С наилучшими пожеланиями