【发布时间】:2017-04-14 05:46:53
【问题描述】:
我在 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);
}
};
});
【问题讨论】:
标签: javascript angularjs authentication single-page-application angular-promise