【问题标题】:ExpressJs JWT secret or public key must be provided必须提供 ExpressJs JWT 密钥或公钥
【发布时间】:2019-02-21 20:32:36
【问题描述】:

我想进行检查验证,但返回给我

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'
    })
  }
}

【问题讨论】:

  • 您是否在单独的 js 存档中声明了 JWT_KEY 值?喜欢 nodemon.json 如果你使用的是 nodemon { "env": { "JWT_KEY": value } }
  • 很高兴它有帮助。就您的问题提供了一些上下文的完整答案,如果有用,您可以投票。

标签: node.js express jwt express-jwt


【解决方案1】:

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

也就是说,您必须在单独的 js 存档中声明变量 JWT_KEY。如果您使用的是 Nodemon,只需创建一个存档 nodemon.json(在这种情况下与 env 类似)并像这样声明您的变量:

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

【讨论】:

  • 我已经有 nodemon.json 与我的 JWT_KEY 具有相同的模式代码。我仍然收到那个错误。知道我在哪里失踪吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 2020-11-26
  • 2018-10-17
  • 2017-05-11
相关资源
最近更新 更多