我正在使用jwt创建令牌,但是当我通过邮递员登录时,我从我的控制台收到错误消息" error : secretOrPrivateKey must have a value“。我已经附上了我的登录码。请任何能帮助我的人
exports.login = (req, res, next) => {
User.findOne({
where: {
email: req.body.email
}
})
.then(user => {
if (!user) {
return res.status(401).json({
message:
"Auth failed!! either the account does't exist or you entered a wrong account"
});
}
bcrypt.compare(req.body.password, user.password, (err, result) => {
if (err) {
return res.status(401).json({
message: "Auth failed",
token: token
});
}
if (result) {
const token = jwt.sign(
{
email: user.email,
password: user.id
},
process.env.JWT_KEY,
{
expiresIn: "1h"
}
);
res.status(200).json({
message: "Auth granted, welcome!",
token: token
});
}
});
})
.catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
};
这是我的env.json文件
{
"env":{
"MYSQL":"jllgshllWEUJHGHYJkjsfjds90",
"JWT_KEY": "secret"
}
}
发布于 2019-11-03 03:30:09
看起来您的应用程序无法正确读取环境变量。
我不知道您使用哪个包来加载环境变量,但最简单的方法是使用dotenv包。
在使用npm i dotenv安装之后,尽可能早地将其导入您的应用程序主文件中,如下所示:
require("dotenv").config();
使用此内容(如您所见,格式为key=value)在应用程序根文件夹中创建.env文件
MYSQL=jllgshllWEUJHGHYJkjsfjds90
JWT_KEY=secret
然后,您可以像以前一样访问它们的值:
process.env.JWT_KEY
.env文件:
发布于 2020-08-31 19:04:37
删除process.env.JWT_秘密_键,然后这样做:${process.env.JWT_SECRET_KEY}
用反引号把它括起来。它为我解决了这个问题。
发布于 2020-06-13 03:02:33
只有当我将其与如下所示的空字符串连接在一起时,它才能对我起作用:
"" + process.env.JWT_KEY
https://stackoverflow.com/questions/58673430
复制相似问题