почему токен на предъявителя выдает ошибку «Не удается прочитать свойство split из undefined»? - PullRequest
0 голосов
/ 04 мая 2020

Все, что я пытаюсь сделать, это защитить express маршрут .. здесь отправлять запрос от реакции на express маршрутизатор:

Axios.post("http://localhost:5000/users/userinfo/" + this.state.id, {
      headers: { Authorization: "Bearer " + "jsonwebtoken" },
      data:{this.state.data},
    })
      .then((res) => console.log(res.data))
      .catch((err) => console.log(err));

теперь этот запрос попадает на маршрутизатор express:

router.post("/userinfo/:id", verifyToken, (req, res) => {
  res.json({ msg: "authorized", data: req.payback });
)}

Вот промежуточное программное обеспечение verfifyToken:

module.exports = function (req, res, next) {
  try {
    const decode = req.headers.authorization.split(" ")[1];
    req.token = decode;

    jwt.verify(req.token, process.env.JWT_SECRET, (err, data) => {
      if (!err) {
        req.payback = data;
        next();
      } else {
        return res.json({ error: "Unauthorized User!" });
      }
    });
  } catch (error) {
    console.log(error);
    res.json({ error: error });
  }
};

, но это дает мне ошибку: Ошибка типа: невозможно прочитать свойство 'split' из неопределенного

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

1 Ответ

0 голосов
/ 04 мая 2020

axios.post имеет следующую подпись axios#post(url[, data[, config]])

Так что вместо этого вы должны сделать следующее.

Axios.post("http://localhost:5000/users/userinfo/" + this.state.id, 
  this.state.data, {
    headers: { Authorization: "Bearer " + "jsonwebtoken" },
  })

Кроме того, если вы хотите только один поле заголовка, лучше использовать req.get() или псевдоним req.header, чтобы избежать несоответствия регистра

req.header('Authorization')
...