我在Lumen中有我的应用程序后端实现,它在每次用户登录时都会给出一个JWT令牌。前端我使用Angular将令牌保存在本地存储中,并且我将它添加到所有标题在随后的请求中。 要检查令牌期满并通过创建一个请求刷新我使用https://github.com/auth0/angular-jwt如何在angularjs中使用拦截器刷新JWT令牌?
我在应用程序的配置添加了凭证更新代码,但是当我在这里做任何其他的要求是该方法不会被调用我试过的代码。
app.config(function Config($httpProvider, jwtInterceptorProvider) {
jwtInterceptorProvider.tokenGetter = function(jwtHelper, $http,$localStorage) {
if ($localStorage.currentUser) {
var token = $localStorage.currentUser.token;
if (jwtHelper.isTokenExpired(token)) {
return $http({
url: 'http://backend.mywebsite.com/token',
method: 'GET'
}).then(function(response) {
var token = response.token;
$localStorage.currentUser.token = token;
$http.defaults.headers.common.Authorization = 'Bearer ' + $localStorage.currentUser.token;
return token;
});
} else {
return token;
}
}
}
$httpProvider.interceptors.push('jwtInterceptor');
});
我想知道如何配置此功能,以便每当令牌过期时它会自动刷新并设置在http头中?
这与我所做的或多或少相似,但这不会在令牌过期时触发请求。 – Rishabh
在您的实现中,我看不到任何刷新标记,并且在示例代码中,此行缺少'$ httpProvider.interceptors.push('jwtInterceptor');' – unicodeveloper
我已经有了该行来注册拦截器,更新了代码。发生的事情是拦截器只在我登录时被调用,这是唯一一次检查令牌。为进一步请求令牌不检查,因此我得到一个401 – Rishabh