如何在nodejs中将jwt令牌到期时间设置为最大值?

时间:2017-07-20 06:42:29

标签: node.js jwt

我不希望我的令牌过期而且永远有效。

var token = jwt.sign({email_id:'123@gmail.com'}, "Stack", {

                        expiresIn: '24h' // expires in 24 hours

                         });

在上面的代码我给了24小时.. 我不希望我的令牌过期。 该怎么办?

5 个答案:

答案 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' });