Заголовок ответа чтения углового перехватчика - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть перехватчик в моем угловом приложении, мне нужно увидеть заголовок ответа после завершения запроса, в настоящее время я делаю это

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
                })
        });
}
};

Возможно, я делаю что-то глупое, но не могу понять.см. журнал из углового приложения ниже

enter image description here

ответ всегда имеет JWT, даже если мой сервер его не отправляет, потому что он отправляет только при разнице во временимежду созданным JWT и текущим временем больше 3 минут, так что, возможно, оно кэшируется или я получаю его неправильно, потому что иногда в журнале JWT, когда я его создал несколько часов назад, предложите решение

...