私はangularjsでシングルページアプリケーションを開発しました。私は、リフレッシュトークンメカニズムを実装しました。リフレッシュトークンは30分ごとにリフレッシュすると仮定します。私は、インターセプタのresponseErrorにリフレッシュトークンを処理しようとしています。私は401の不正なエラーを返す場合、リクエストを保持しようとしています。 401エラーを返してからトークンをリフレッシュし、新しいトークンですべてのリクエストを再開すると、すべてのリクエストを保持するメカニズムはありますか?
が、それはここでのサンプルコードでは、要するに
$provide.factory('httpTokenInterceptor', function ($q, $injector, $cookies) {
return {
// On request sending
request: function (config) {
config.headers = config.headers || {};
// get this data from $cookies
var globals = $cookies.getObject('globals') || {};
//console.log(globals);
if (globals.authData)
config.headers.Authorization = 'Bearer ' + globals.authData.access_token;
return config;
},
// On response failure
responseError: function (rejection) {
console.log('AuthTokenHttpInterceptor responseError');
console.log(rejection);
if (rejection.status === 401) {
//hold current and all pending request
var aService = $injector.get('authenticationService');
aService.getRefreshToken().then(function(response) {
//need to resume all the request here
deferred.resolve(response);
});
return deferred.promise;
}
return $q.reject(rejection);
}
};
});