узел: res.locals не определен? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь создать промежуточную аутентификацию для проверки правильности полученного токена и передачи пользовательских данных с помощью res.locals, но когда я пытаюсь получить доступ к res.local, возникает ошибка.

authmiddleware: чтобы проверить, является ли токен действительным и существует ли пользователь, передайте.

exports.authMiddleware = function (req, res, next) {
    const token = req.headers.authorization;

    if (token) {
        const user = parseToken(token);

        User.findById(user.userId, function (err, u) {
            if (err) {
                return res.status(422).send({
                    errors: normalizeErrors(err.errors)
                });
            }
            if (u !== null) {
                res.locals.user = u;
                console.log(res.locals)
                console.log(u)
                next();
            } else {
                return notAuthorized(res);
            }
        })
    } else {
        return notAuthorized(res);
    }
}

контроллер для отвлечения пользователя от re.locals, но появляется ошибка, так как не может прочитать пользователя неопределенный.

exports.changeAddress = function(req,res) {
    const {user} = req.locals;
}

1 Ответ

0 голосов
/ 18 апреля 2020

Это потому, что в объекте req нет поля с именем locals. Я предполагаю, что changeAddress является POST-маршрутом, а locals отправляется клиентом в виде тела запроса POST в форме JSON.

В этом случае вам необходимо получить доступ к locals следующим образом, req.body.locals

Имейте в виду, что, поскольку тело запроса равно JSON, вам потребуется express для правильного его анализа.

Для этого вам необходимо установить зависимость промежуточного программного обеспечения body-parser ,

npm i body-parser

А затем добавьте это промежуточное ПО в ваше express приложение,

const bodyParser = require('body-parser')
app.use(bodyParser.json())

Ссылка: https://expressjs.com/en/resources/middleware/body-parser.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...