У меня есть перехватчик в моем угловом приложении, мне нужно увидеть заголовок ответа после завершения запроса, в настоящее время я делаю это
return next.handle(copy).do((event: any) => {
if (event && event.headers && event.headers.get('x-token')) {
console.log('\ndelaying', event.headers.get('x-token'));
const authService = this.authService;
setTimeout(function () {
console.log('\ndelayed', event.headers.get('x-token'));
const token = event.headers.get('x-token');
authService.setJWT(token);
}, 1000 * 3); // delay
}
}, error => {
if (error && error.status === 401) {
this.authService.logout();
this.router.navigateByUrl('/login');
}
});
}
после получения ответа я проверяюзаголовки.если x-токен отправляется с сервера, я обновляю JWT моего приложения, заменяя его новым, который я получил
, теперь это промежуточное программное обеспечение, установленное на моем REST API Server
module.exports = {
refreshToken: (req, res, next) => {
let reQtoken = req.get('authorization') ? req.get('authorization') : req.query.token;
verifyJWT(reQtoken)
.then((decodedToken) => {
//var current_time = new Date().getTime() / 1000;
const tokenDate = moment.unix(decodedToken.iat);
const diff = moment().diff(tokenDate, 'minutes');
console.log('\n',reQtoken);
console.log(tokenDate,diff, moment());
if (diff > 3) {
console.log('here');
const token = createJWTToken({
username: decodedToken.username,
person_id: decodedToken.person_id
});
res.set({
'x-token': token,
'Access-Control-Expose-Headers': 'x-token'
});
}
next()
})
.catch((err) => {
res.status(status.UNAUTHORIZED)
.json({
message: "Invalid auth token provided.",
err: err
})
});
}
};
Возможно, я делаю что-то глупое, но не могу понять.см. журнал из углового приложения ниже
ответ всегда имеет JWT, даже если мой сервер его не отправляет, потому что он отправляет только при разнице во временимежду созданным JWT и текущим временем больше 3 минут, так что, возможно, оно кэшируется или я получаю его неправильно, потому что иногда в журнале JWT, когда я его создал несколько часов назад, предложите решение