我不希望我的令牌过期而且永远有效。
var token = jwt.sign({email_id:'123@gmail.com'}, "Stack", {
expiresIn: '24h' // expires in 24 hours
});
在上面的代码我给了24小时.. 我不希望我的令牌过期。 该怎么办?
答案 0 :(得分:12)
以天为单位设置过期时间:尝试此操作
var token = jwt.sign({email_id:'123@gmail.com'}, "Stack", {
expiresIn: '365d' // expires in 365 days
});
“expiresIn”应该是一个秒数或字符串,表示时间跨度,例如:“1d”,“20h”,
文档:jsonwebtoken
答案 1 :(得分:11)
JWT的exp
声明是可选的。如果令牌没有它,则认为它不会过期
根据https://www.npmjs.com/package/jsonwebtoken的文档,expiresIn
字段也没有默认值,因此请省略它。
expiresIn, notBefore,受众群体,主题,发行人没有默认值。这些声明也可以分别在exp,nbf,aud,sub和iss中直接在有效载荷中提供,但是你不能在两个地方都包含这些声明。
var token = jwt.sign({email_id:'123@gmail.com'}, "Stack", {});
答案 2 :(得分:5)
您可以使用数字或字符串设置过期时间:
以秒表示或描述时间跨度的字符串 时代/毫秒。
例如:60,“ 2天”,“ 10h”,“ 7d” 。数值被解释为秒计数。如果您使用 字符串,请确保您提供时间单位(天,小时等),
否则默认使用毫秒单位(“ 120”等于 “ 120ms”)。
var token = jwt.sign({email_id:'123@gmail.com'}, "Stack", {
expiresIn: "10h" // it will be expired after 10 hours
//expiresIn: "20d" // it will be expired after 20 days
//expiresIn: 120 // it will be expired after 120ms
//expiresIn: "120s" // it will be expired after 120s
});
答案 3 :(得分:4)
您可以将设置保存在配置文件中。 在您希望的天数(如90天后)之后,在 d 天后过期: 90d 数小时使用 h ,例如 20h
您还可以使用毫秒,例如4102444800ms之后
config.env
JWT_SECRET = my-32-character-ultra-secure-and-ultra-long-secret
JWT_EXPIRES_IN = 90d
authController.js
const signToken = (id) => {
return jwt.sign({ id: id }, process.env.JWT_SECRET, {
expiresIn: process.env.JWT_EXPIRES_IN,
});
};
const signIn = (user) =>{
const token = signToken(user._id);
}
答案 4 :(得分:0)
jwt.sign(contentToEncrypt, SECRET_KEY, { expiresIn: '365d' });