JWT中的“sub”声明代表什么?
2026/8/28 13:37:53 网站建设 项目流程

JWT(JSON Web Token)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。这些信息可以用于验证、授权、信息交换等。JWT主要由三部分组成:Header(头部),Payload(有效载荷),和Signature(签名)。

在JWT的Payload(有效载荷)部分,可以包含一些预定义的声明(Claims),“sub”就是其中一个。“sub”代表Subject(主题),通常用来表示JWT的接收者或者JWT所代表的用户。比如,在一个用户认证的上下文中,“sub”可能包含用户的唯一标识符,如用户ID。

通俗解释

你可以把JWT想象成一封加密的信。这封信有三个主要部分:信封(Header),信纸(Payload),和信上的印章(Signature)。在信纸(Payload)上,你可以写一些信息,比如这封信是给谁的(“sub”就是这个人的名字或者标识)。当你把这封信交给别人时,他们可以查看信纸上的内容,知道这封信是给你的,并且因为信上有印章(Signature),所以他们可以确认这封信是真实的,没有被篡改过。

PHP实例代码

下面是一个简单的PHP示例,展示如何生成一个包含“sub”声明的JWT:

<?php require 'vendor/autoload.php'; // 引入JWT库 use \Firebase\JWT\JWT; $key = 'your_secret_key'; // 用于签名的密钥 $payload = array( 'sub' => 'user123', // 设置“sub”声明为用户ID 'exp' => time() + 3600 // 设置JWT的过期时间为1小时后 ); $jwt = JWT::encode($payload, $key); // 生成JWT echo "JWT: " . $jwt . "\n"; // 输出JWT ?>

在这个示例中,我们首先引入了JWT库,然后设置了一个用于签名的密钥。接着,我们创建了一个包含“sub”和“exp”声明的有效载荷(Payload)。“sub”声明被设置为“user123”,代表这个JWT是给用户ID为“user123”的用户。最后,我们使用JWT::encode方法生成了JWT,并将其输出。

注意:为了运行这个示例,你需要先安装JWT库。你可以使用Composer来安装它:composer require firebase/php-jwt

这个示例展示了如何生成一个包含“sub”声明的JWT。在实际应用中,你可能还需要处理更多的逻辑,比如验证JWT的签名、解析JWT的内容等。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询