JWT令牌有效期多长时间

JWT令牌有效期多长时间

JSON Web令牌是一种高效、安全且广泛使用的在互联网上传输或交换数据的方法。通常,它用于应用程序的身份验证和授权。验证的工作流程是,在服务器端生成令牌并将其发送回客户端,用于进一步在服务器上进行请求。现在讨论的关键是这个jwt令牌会有效多久?这意味着多长时间后,服务器将不再考虑客户端发送的令牌。让我们首先了解如何创建JWT令牌。

使用 jsonwebtoken 库的 sign() 方法用于创建令牌,该方法接受参数对象,并返回生成的令牌。

语法:

jwt. sign(payload, secretOrPrivateKey, [options, callback])
JavaScript

参数:

  • payload: 它是要在令牌中加密的信息
  • secretKey: 它是用于标识令牌真实性的签名或称作代码。
  • options: 在选项中,我们传递有关令牌的某些信息,这是我们提供令牌有效期限的地方。

返回类型: : 此方法将返回JWT令牌

示例: 创建一个有效期为10分钟的令牌。

步骤1: 创建一个Node项目

由于我们正在使用Node库,创建一个Node项目是必须的步骤,在终端中写入npm init。它会要求您提供关于项目的一些配置,非常容易提供。

npm init
JavaScript

步骤2: 安装“ jsonwebtoken ”包

在编写JWT代码之前,我们必须先安装这个包,

npm install jsonwebtoken
JavaScript

这将是我们在安装后的项目结构,其中node_modules包含模块,package.json存储项目的描述。此外,我们还创建了一个 app.js 文件来编写整个代码。

项目结构:

JWT令牌有效期多长时间

步骤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);
JavaScript

输出:

JWT令牌有效期多长时间

方法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);
JavaScript

输出:

JWT令牌有效期多长时间

步骤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");
    }
});
JavaScript

在10分钟之前:

输出1: 在生成令牌之前的10分钟,我们检查代码,如预期的那样,else代码块将起作用。

JWT令牌有效期多长时间

10分钟后:

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

JWT令牌有效期多长时间

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册