Angularjs 代理刷新令牌获取新JWT的基本策略
我在实现Angular SPA和JWT方面做得很好,但我总是很难授权新的令牌 我的基本策略是:Angularjs 代理刷新令牌获取新JWT的基本策略,angularjs,authentication,single-page-application,jwt,Angularjs,Authentication,Single Page Application,Jwt,我在实现Angular SPA和JWT方面做得很好,但我总是很难授权新的令牌 我的基本策略是: 在auth拦截器get auth Error=>Delegate和刷新令牌中,替换JWT,否则注销 这不起作用,因为将触发多个异步调用,其中一个将获得委托函数,但第二个调用将使用刷新令牌,该调用将失败,然后用户将注销 在做其他事情之前:检查令牌过期,如果过期=>用刷新令牌委派,替换jwt,否则注销 它有一个类似的问题,第一次调用会注意到它已经过期,然后去获取新的令牌,但是由于它是异步的,其余的调用会触
.config(function($httpProvider) {
$httpProvider.interceptors.push(function(moment, $rootScope, $q, httpBuffer) {
return {
request: function (config) {
if ($rootScope.authToken) {
config.headers["Authentication"] = 'Bearer ' + $rootScope.authToken;
var payload = angular.fromJson(atob($rootScope.authToken.split('.')[1]));
var utcNow = moment.utc().valueOf();
// 3600000 ms = 1 hr
if(utcNow > payload.iat + 3600000){
$rootScope.$broadcast('auth:rotateToken', $rootScope.authToken);
}
}
return config;
},
//responseError: ...see Witold's code...
});
})