JWT中的自定义声明如何添加在JWTJSON Web Token中除了标准的声明如iss、sub、aud、exp等外我们还可以添加自定义声明。自定义声明允许我们在Token中携带一些特定的、与应用相关的信息。底层原理JWT由三部分组成Header头部Payload负载和Signature签名。自定义声明是添加到Payload部分的。Payload是一个JSON对象包含了一系列声明即键值对。这些声明可以被视为关于Token的一些描述或者携带的数据。当我们添加自定义声明时这些声明会被一起编码到JWT的Payload部分。通俗解释想象一下JWT就像是一张纸条你可以在这张纸条上写上一些信息。除了必须写的一些基本信息比如你的名字、纸条的有效期等你还可以在这张纸条上添加一些你自己想写的内容比如你的爱好、你的宠物名字等。这些你自己添加的内容就相当于JWT中的自定义声明。完整的PHP实例代码以下是一个使用PHP和firebase/php-jwt库来生成带有自定义声明的JWT Token的示例代码?php require_once vendor/autoload.php; // 引入JWT库 use \Firebase\JWT\JWT; $key your_secret_key; // 用于签名和验证JWT的密钥 // 定义Payload中的标准声明和自定义声明 $payload array( user_id 123, // 假设的用户ID标准声明 exp time() (86400 * 7), // Token有效期为7天标准声明 custom_claim custom_value, // 自定义声明比如用户的角色、权限等 another_custom_claim array(hobby reading, pet cat) // 另一个自定义声明可以是复杂的数据结构 ); // 生成JWT Token $jwt JWT::encode($payload, $key); // 输出JWT Token echo Your JWT Token with custom claims is: . $jwt; ?在这个示例中我们首先定义了一个Payload数组其中包含了标准声明如user_id和exp和两个自定义声明custom_claim和another_custom_claim。然后我们使用JWT::encode()函数和这个Payload以及服务器的密钥来生成一个带有自定义声明的JWT Token。最后我们输出这个Token。注意在实际应用中你需要确保密钥的安全性并且不要在客户端暴露任何密钥信息。此外自定义声明的使用应该谨慎避免携带敏感信息以防信息泄露。