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

Jag*_*esh 14 node.js jwt

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

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

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

                         });
Run Code Online (Sandbox Code Playgroud)

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

ped*_*ofb 17

exp一个智威汤逊的要求是可选的.如果令牌没有它,则认为它不会过期

根据https://www.npmjs.com/package/jsonwebtoken的文档,该expiresIn字段也没有默认值,所以只需省略它.

expiresIn, notBefore,audience,subject,issuer 没有默认值.这些声明也可以分别直接用exp,nbf,aud,sub和iss在有效载荷中提供,但是你不能在两个地方都包含这些声明.

var token = jwt.sign({email_id:'123@gmail.com'}, "Stack", {});
Run Code Online (Sandbox Code Playgroud)


Ved*_*Ved 16

要设置几天的过期时间:试试这个

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

           expiresIn: '365d' // expires in 365 days

      });
Run Code Online (Sandbox Code Playgroud)

"expiresIn"应该是一个秒或字符串,它会重复一次,例如:"1d","20h",

  • 如果我通过计算 3650d 的天数来提供 10 年,它会起作用吗? (2认同)

Abo*_*zlR 12

您可以在 number 或 string 中设置过期时间:

以秒或描述时间跨度 zeit/ms 的字符串表示。
例如: 60, "2 days", "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
 });
Run Code Online (Sandbox Code Playgroud)


小智 8

  jwt.sign(contentToEncrypt, SECRET_KEY, { expiresIn: '365d' });
Run Code Online (Sandbox Code Playgroud)


Lor*_*ord 6

您可以将设置保存在配置文件中。在您想要的天数使用d后过期,例如 90 天后应该是:90d 小时使用h例如20h

您也可以使用毫秒,例如,在 4102444800ms 之后

配置文件

JWT_SECRET = my-32-character-ultra-secure-and-ultra-long-secret
JWT_EXPIRES_IN = 90d

Run Code Online (Sandbox Code Playgroud)

验证控制器.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);
}
Run Code Online (Sandbox Code Playgroud)