Node.js 为什么通过env var传递的令牌过期时间不起作用
我已经使用JWT创建了nodejsAPI和一个Auth系统。我在我的env中设置了令牌过期,但这样它就不起作用了,我必须在函数中手动写入时间 我的功能是帮助者:Node.js 为什么通过env var传递的令牌过期时间不起作用,node.js,jwt,Node.js,Jwt,我已经使用JWT创建了nodejsAPI和一个Auth系统。我在我的env中设置了令牌过期,但这样它就不起作用了,我必须在函数中手动写入时间 我的功能是帮助者: // RNV const { Config } = require("../config"); // JWT const jwt = require("jsonwebtoken"); // Token helper module.exports = { getToken: user => jwt.sign(user, C
// RNV
const { Config } = require("../config");
// JWT
const jwt = require("jsonwebtoken");
// Token helper
module.exports = {
getToken: user => jwt.sign(user, Config.jwt.secret, { expiresIn: <ENV> })
};
它似乎不是这样工作的,我想了解它的原因。您应该尝试这样的方法:proccess.env.JWT\u 然后,在javascript代码中:
// RNV
const { Config } = require("../config");
// JWT
const jwt = require("jsonwebtoken");
// Token helper
module.exports = {
getToken: user => jwt.sign(user, Config.jwt.secret, { expiresIn: process.env.JWT_EXPIRE })
};
在我找到问题的解决方案时回答我的问题,也许可以讨论: 因为from ENV是一个字符串,所以我必须将它转换为数字int,因为它接受expiresIn,我使用parseInt来获取正确的内容
// ENV
const { Config } = require("../config");
// JWT
const jwt = require("jsonwebtoken");
// Token helper
module.exports = {
getToken: user => jwt.sign(user, Config.jwt.secret, { expiresIn: parseInt(Config.jwt.expiration) } )
};
我这样做了,我把60以秒为单位,但出于某种原因,它不能以这种方式工作。您如何设置变量?我的env JWT_EXPIRATION=60中有一个变量,然后我调用process.env.JWT_EXPIRATION在您的命令行中node-e console.logprocess.env的输出是什么?我找到了一个解决方案,因为env中的字符串必须转换为int就像{expiresIn:parseIntConfig.jwt.EXPIRE}一样,它也可以工作:它也可以转换为字符串,即.env=>jwt_EXPIRE=12h,然后``module.exports={getToken:user=>jwt.signuser,Config.jwt.secret,{expiresIn:Stringprocess.env.jwt_EXPIRE}```
// ENV
const { Config } = require("../config");
// JWT
const jwt = require("jsonwebtoken");
// Token helper
module.exports = {
getToken: user => jwt.sign(user, Config.jwt.secret, { expiresIn: parseInt(Config.jwt.expiration) } )
};