不记名令牌未定义

Imp*_* 14 0 node.js express jwt bearer-token

I\xe2\x80\x99m 尝试将承载令牌添加到我的 POST 路由中。当我通过 Postman 提交 POST 请求时,我\xe2\x80\x99m 得到以下输出:

\n\n
{\n    "success": true,\n    "token": "Bearer undefined"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我的 user.js 代码:

\n\n
router.post("/login", (req, res) => {\n  const email = req.body.email;\n  const password = req.body.password;\n\n  //find user by email\n  User.findOne({ email }).then(user => {\n    //check for user\n    if (!user) {\n      return res.status(404).json({ email: "user not found" });\n    }\n    //check password\n    bcrypt.compare(password, user.password).then(isMatch => {\n      if (isMatch) {\n        //user matched\n        const payload = { id: user.id, name: user.name, avatar: user.avatar }; //create jwt payload\n        //sign token : good for one hour\n        jwt.sign(\n          payload,\n          keys.SecretOrKey,\n          { expiresIn: 3600 },\n          (err, token) => {\n            res.json({\n              success: true,\n              token: "Bearer " + token\n            });\n          }\n        );\n      } else {\n        return res.status(400).json({ password: "password incorrect" });\n      }\n    });\n  });\n});\n\n// @route  GET api/users/current\n// @desc   Return current user\n// @access Private route\nrouter.get(\n  "/current",\n  passport.authenticate("jwt", { session: false }),\n  (req, res) => {\n    res.json({ msg: "Success" });\n  }\n);\n\nmodule.exports = router;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不确定问题出在哪里。任何建议表示赞赏。

\n

小智 5

请检查一次您获得的价值keys.SecretOrKey

  • 我的荣幸。:) 很高兴能帮助你。 (2认同)