📌  相关文章
📜  节点js中的jwt令牌过期时间 - Javascript(1)

📅  最后修改于: 2023-12-03 15:41:25.606000             🧑  作者: Mango

节点JS中的JWT令牌过期时间

JSON Web Token (JWT)是一种用于身份验证和授权的开放标准。在Node.js中,使用jsonwebtoken包来生成、签署和验证JWT令牌。

在JWT令牌中,常常设置一个过期时间,即令牌在经过一段时间后就失效。本文将向您介绍如何在Node.js中设置JWT令牌的过期时间。

安装jsonwebtoken包

在Node.js中,使用npm包管理器安装jsonwebtoken包是非常简单的。下面是在Node.js中安装jsonwebtoken包的命令行:

npm install jsonwebtoken
生成JWT令牌

下面是使用jsonwebtoken包在Node.js中生成JWT令牌的代码片段:

const jwt = require("jsonwebtoken");

const payload = {
  user_id: 12345,
  username: "johndoe"
};

const secret = "mysecretkey";

const token = jwt.sign(payload, secret, { expiresIn: "1h" });

console.log(token);

在上述代码片段中,我们使用jsonwebtoken包生成JWT令牌。其中,payload是您要在JWT令牌中存储的信息,secret是用来签署JWT令牌的密钥,expiresIn是JWT令牌的过期时间。在expiresIn中,我们设置了1小时。

其中,jwt.sign()方法的第三个参数可选,您可以在其中设置使用的算法和其他选项。

验证JWT令牌的过期时间

下面是使用jsonwebtoken包在Node.js中验证JWT令牌的代码片段:

const jwt = require("jsonwebtoken");

const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMjM0NSwidXNlcm5hbWUiOiJqb2huZG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.9Xmz-9CEd0y-prhHETdd68jKQEqoybFwMhZchxvZJXc";

const secret = "mysecretkey";

jwt.verify(token, secret, function(err, decoded) {
  if (err) {
    console.log(err);
    return;
  }

  console.log(decoded);

  const current_time = Date.now() / 1000;

  if (current_time > decoded.exp) {
    console.log("Token has expired");
  } else {
    console.log("Token is valid");
  }
});

在上述代码片段中,我们使用jsonwebtoken包验证JWT令牌。其中,token是要验证的JWT令牌,secret是用来签署JWT令牌的密钥。

通过jwt.verify()方法,我们可以将token验证并解码为原始payload。其中,decoded.exp是JWT令牌的过期时间。我们使用当前时间除以1000得到Unix时间戳,将其与decoded.exp进行比较,以判断JWT令牌是否已过期。如果当前时间晚于过期时间,则JWT令牌已过期。

总结

本文向您介绍了在Node.js中设置JSON Web Token(JWT)令牌的过期时间的方法。通过jsonwebtoken包,我们可以方便地生成、签署和验证JWT令牌,并设置过期时间。在实际开发中,JWT令牌的过期时间可以保证安全性,有效地保护敏感数据。