Аутентификация JWT-узла - req.headers ['' authorization »] не определено - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь установить токен, затем получаю токен из заголовка, но он всегда показывает «undefined», когда я console.log (req.headers ['authorization'])

Вот какой-то код

const express = require('express');
const app = express();
const jwt = require('jsonwebtoken');
const accessTokenSecret = 'youraccesstokensecret';
app.listen(8080, () => {
    console.log('Authentication service started on port 8080');
});

Я установил токен

app.get("/createJWT",function(req,res){
    const accessToken = jwt.sign({ username: "myName"}, accessTokenSecret);

    res.json({
        accessToken
    });
})

промежуточное ПО (я показываю, что req.headers ['authorization'] не определено)

const authenticateJWT = (req, res, next) => {
    const authHeader = req.headers['authorization'];
    console.log(authHeader)
    if (authHeader) {
        const token = authHeader.split(' ')[1];

        jwt.verify(token, accessTokenSecret, (err, user) => {
            if (err) {
                return res.sendStatus(403);
            }

            req.user = user;
            next();
        });
    } else {
        res.sendStatus(401);
    }
};

И, наконец, я получаю доступ к маршруту для тестирования , req.headers ['authorization'] не имеет значений.

app.get("/check",authenticateJWT,function(req, res){
    res.send("ok")
})

пожалуйста, помогите мне, спасибо

1 Ответ

1 голос
/ 26 мая 2020

Итак, когда вы вызываете API из внешнего интерфейса или говорите, что проверяете API с помощью почтальона , настраиваете ли вы заголовок при запросе /check? (Я не говорю о вашем /createJWT, который создает токен и отправляет его в качестве ответа)

В вашем внешнем коде / почтальоне вам нужно явно добавить заголовок authorization JWTtoken при создании HTTP-запроса и после что ваш бэкэнд получит его. Пожалуйста, проверьте, не делается ли это.

...