JWT令牌有效期多长时间
JSON Web令牌是一种高效、安全且广泛使用的在互联网上传输或交换数据的方法。通常,它用于应用程序的身份验证和授权。验证的工作流程是,在服务器端生成令牌并将其发送回客户端,用于进一步在服务器上进行请求。现在讨论的关键是这个jwt令牌会有效多久?这意味着多长时间后,服务器将不再考虑客户端发送的令牌。让我们首先了解如何创建JWT令牌。
使用 jsonwebtoken 库的 sign() 方法用于创建令牌,该方法接受参数对象,并返回生成的令牌。
语法:
jwt. sign(payload, secretOrPrivateKey, [options, callback])
参数:
- payload: 它是要在令牌中加密的信息
- secretKey: 它是用于标识令牌真实性的签名或称作代码。
- options: 在选项中,我们传递有关令牌的某些信息,这是我们提供令牌有效期限的地方。
返回类型: : 此方法将返回JWT令牌
示例: 创建一个有效期为10分钟的令牌。
步骤1: 创建一个Node项目
由于我们正在使用Node库,创建一个Node项目是必须的步骤,在终端中写入npm init。它会要求您提供关于项目的一些配置,非常容易提供。
npm init
步骤2: 安装“ jsonwebtoken ”包
在编写JWT代码之前,我们必须先安装这个包,
npm install jsonwebtoken
这将是我们在安装后的项目结构,其中node_modules包含模块,package.json存储项目的描述。此外,我们还创建了一个 app.js 文件来编写整个代码。
项目结构:

步骤3 :创建具有明确过期时间的 JWT 令牌。
有两种方法可以注册令牌的过期时间,下面都有说明。
- 创建一个过期时间表达式。
- 在方法的选项参数中提供 JWT 令牌的过期时间。
方法1: 存在一个键 exp ,我们可以在其中提供自纪元以来的秒数,并且令牌将在这些秒数内有效。
// Importing module
const jwt = require('jsonwebtoken');
const token = jwt.sign({
// Expression for initialising expiry time
exp: Math.floor(Date.now() / 1000) + (10 * 60),
data: 'Token Data'
}, 'secretKey');
const date = new Date();
console.log(`Token Generated at:- {date.getHours()}
:{date.getMinutes()}
:${date.getSeconds()}`);
// Printing the JWT token
console.log(token);
输出:

方法2: 在这种方法中, 我们可以在选项中传递时间给 expiresIn 这个键,它可以是有效期的秒数,或者是持续时间的字符串, ‘1h’ , ‘2h’ , ’10m’ ,等等。
// Importing module
const jwt = require('jsonwebtoken');
const token = jwt.sign({
// Assigning data value
data: 'Token Data'
}, 'secretKey', {
expiresIn: '10m'
});
const date = new Date();
console.log(`Token Generated at:- {date.getHours()}
:{date.getMinutes()}
:${date.getSeconds()}`);
// Printing JWT token
console.log(token);
输出:

步骤4:验证令牌的有效期
我们已经成功生成令牌,现在是时候验证代码是否按照预期工作了。
//Importing module
const jwt = require('jsonwebtoken');
// JWT token
const token =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2Mzc4NjgxMzMsImRhdGWf"
const date = new Date();
// Verifying the JWT token
jwt.verify(token, 'secretKey', function(err, decoded) {
if (err) {
console.log(`{date.getHours()}:{date.getMinutes()}
:{date.getSeconds()}`);
console.log(err);
}
else {
console.log(`{date.getHours()}:{date.getMinutes()}
:{date.getSeconds()}`);
console.log("Token verifified successfully");
}
});
在10分钟之前:
输出1: 在生成令牌之前的10分钟,我们检查代码,如预期的那样,else代码块将起作用。

10分钟后:
输出2 :这里我们检查一次token是否过期。在这种情况下,将抛出 TokenExpirationError 。

结论: 在看到这两个输出以及创建令牌的方法后,我们可以分析令牌的持续时间是如何声明的以及它的有效期有多长。
极客教程