必须提供ExpressJs JWT秘密或公钥

时间:2018-09-17 21:20:02

标签: node.js express jwt express-jwt

我想进行检查验证,但返回给我; JsonWebTokenError:必须提供秘密或公共密钥

我可以成功获得令牌

我该如何解决?

我正在关注本教程;

https://www.youtube.com/watch?v=8Ip0pcwbWYM&t=633s

const jwt = require('jsonwebtoken');
module.exports = (req,res,next) =>{
    try{
    const token = req.headers.authorization.split(" ")[1];
    console.log(token);
    const decoded = jwt.verify(token,process.env.JWT_KEY);
    req.userData = decoded;
    next();
    }catch(error){
        console.log(error);
        return res.status(401).json({
            message :'Auth failed'
        })
    }

}

1 个答案:

答案 0 :(得分:0)

process.env全局变量由节点在运行时注入,以供您的应用程序使用。您需要创建一个新的env文件来存储这些环境变量。

也就是说,您必须在单独的js归档文件中声明变量JWT_KEY。如果您使用的是Nodemon,则只需创建一个归档文件nodemon.json(在这种情况下,其工作原理类似于env)并声明变量,如下所示:

{ 
"env": { 
  "JWT_KEY": value,
  ...
  }
}