跳至页脚内容
PYTHON 帮助

PyJWT Python(如何运作:开发人员指南)

在Python库中,PyJWT是最受欢迎的Python库,为Python项目中编码和解码JSON Web Tokens (JWTs)提供了一种方便的方式。 JWTs是一种紧凑的、URL安全的方式,用于表示在两个方之间传递的声明。 PyJWT包简化了Python中的JSON Web Token实现。 JWT令牌在Web应用程序中广泛用于身份验证和信息交换。 该包在网上有丰富的文档支持开发者。 In this article, we will also look into IronPDF from IronSoftware to generate PDF documents later.

关键特性

  1. JWT编码和解码:PyJWT允许您轻松地编码和解码JWTs。 您可以通过使用一个秘密密钥和算法对一个载荷进行编码来创建一个令牌,然后解码它以验证载荷。
  2. 支持多种算法:PyJWT支持多种用于签名令牌的算法,包括HMAC(HS256, HS384, HS512)和RSA(RS256, RS384, RS512)。 它同时支持对称和非对称算法。
  3. 声明验证:该库提供了内置支持来验证标准声明,如iss(发行者)、sub(主题)、aud(观众)和exp(过期时间),帮助安全的基于令牌的身份验证。

安装

要安装PyJWT,可以使用pip:

pip install pyjwt
pip install pyjwt
SHELL

如需额外的加密支持,可以使用crypto选项安装它:

pip install pyjwt[crypto]
pip install pyjwt[crypto]
SHELL

基本用法

以下是如何在Python实现中使用PyJWT的简单示例:

import jwt

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"
# Create the JWT token with a secret key using HS256 algorithm
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)

# Decoding a JWT
# Decode the JWT token to retrieve the original payload
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)
import jwt

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"
# Create the JWT token with a secret key using HS256 algorithm
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)

# Decoding a JWT
# Decode the JWT token to retrieve the original payload
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)
PYTHON

在这个例子中,我们通过使用HS256算法用一个秘密密钥对一个载荷进行编码来创建一个JWT。 然后我们解码该令牌以检索原始的载荷。

输出

PyJWT Python(如何工作:开发者指南):图1 - 解码后的示例响应载荷

用例

  1. 身份验证:JWTs通常用于Web应用中的身份验证。 用户登录后,服务器生成一个JWT并将签名的令牌返回给客户端。 客户端可以使用此令牌验证用户身份,并在后续请求中包括该令牌。
  2. 信息交换:各方可以使用JWTs安全传输信息。 载荷可以包括任何数据; 令牌的签名确保其完整性。

IronPDF 简介

PyJWT Python(如何工作:开发者指南):图2 - IronPDF for Python:Python PDF库

IronPDF是一个强大的Python库,用于通过HTML、CSS、图像和JavaScript创建、编辑和签署PDF。 它在使用最少内存的同时提供高质量的性能。 Users can generate PDFs from HTML, merge or split PDF documents, extract text and images from PDFs, apply watermarks, rasterize a PDF to image formats like JPEG and PNG, encrypt PDF files, and more. IronPDF提供了广泛的PDF操作。

IronPDF的关键特性

HTML 至 PDF 转换

用户可以将HTML文件、HTML字符串和URL转换为PDF。 例如,使用IronPDF的Chrome PDF渲染器将网页渲染为PDF

跨平台支持

IronPDF为Python 3+版本设计,可在Windows、Mac、Linux或云平台上运行。

IronPDF is also available in .NET, Java, Python, and Node.js.

编辑和签名

用户可以设置属性,使用IronPDF为PDF添加密码和权限,并应用数字签名。

页面模板和设置

IronPDF允许您自定义PDF文件,使用页眉、页脚,页码和可调的边距。 它还支持响应式布局和自定义纸张大小。

标准合规

IronPDF包遵循PDF标准如PDF/A和PDF/UA。 它支持UTF-8字符编码并处理图像、CSS和字体等资产。

使用IronPDF和PyJWT生成PDF文件

IronPDF先决条件

  1. IronPDF 使用 .NET 6.0 作为其底层技术。 因此,请确保您的系统上安装了.NET 6.0运行时
  2. Python 3.0+: 您需要安装 Python 版本 3 或更高版本。
  3. Pip:安装Python包安装器pip以安装IronPDF包。

首先,让我们在项目根目录下创建一个Python文件以添加我们的脚本。对于这个例子,我们使用Visual Studio Code作为代码编辑器。

打开Visual Studio Code并创建文件pyjwtDemo.py

安装IronPDF库:

pip install ironpdf
pip install pyjwt
pip install ironpdf
pip install pyjwt
SHELL

然后添加下面的代码以演示IronPDF和PyJWT Python包的使用:

import jwt
from ironpdf import ChromePdfRenderer, License

# Apply your license key
License.LicenseKey = "your-license-key"

# Initialize HTML content to be converted into PDF
content = "<h1>Awesome IronPDF with PyJWT</h1>"
content += "<h2>Encoding a JWT</h2>"

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"  # Secret key for signing
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)  # Print the generated JWT

# Append details to the HTML content
content += f"<p>Message: {payload['Message']}</p>"
content += f"<p>Secret: {secret}</p>"
content += f"<p>Generated Token: {token}</p>"

# Decoding a JWT
content += "<h2>Decoding a JWT</h2>"
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)  # Print the decoded payload

# Append decoded payload details to the HTML content
content += f"<p>Decoded Token: {decoded_payload}</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)

# Export PDF to a file
pdf.SaveAs("Demo-pyjwt.pdf")
import jwt
from ironpdf import ChromePdfRenderer, License

# Apply your license key
License.LicenseKey = "your-license-key"

# Initialize HTML content to be converted into PDF
content = "<h1>Awesome IronPDF with PyJWT</h1>"
content += "<h2>Encoding a JWT</h2>"

# Encoding a JWT
payload = {"Message": "IronPDF is an Awesome PDF library"}
secret = "your-256-bit-secret"  # Secret key for signing
token = jwt.encode(payload, secret, algorithm="HS256")
print(token)  # Print the generated JWT

# Append details to the HTML content
content += f"<p>Message: {payload['Message']}</p>"
content += f"<p>Secret: {secret}</p>"
content += f"<p>Generated Token: {token}</p>"

# Decoding a JWT
content += "<h2>Decoding a JWT</h2>"
decoded_payload = jwt.decode(token, secret, algorithms=["HS256"])
print(decoded_payload)  # Print the decoded payload

# Append decoded payload details to the HTML content
content += f"<p>Decoded Token: {decoded_payload}</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)

# Export PDF to a file
pdf.SaveAs("Demo-pyjwt.pdf")
PYTHON

代码解释

此代码片段演示了如何使用jwt(JSON Web Token)库和IronPDF来创建包括编码和解码JWT示例的PDF文件。

下面是每个代码组件功能的概述:

  1. 导入和许可证密钥设置

    导入用于JSON Web Token功能的jwt库和用于PDF生成的ChromePdfRenderer。 设置IronPDF的许可证密钥以启用其功能。

  2. HTML内容设置

    初始化content变量,将要包含在PDF文件中的HTML标记设置为过程的不同步骤。

  3. 编码JWT

    • 定义包含要编码到JWT中的数据(payload)的载荷字典。
    • 指定用于使用SHA-256(HS256)的HMAC算法签名JWT的秘密密钥(secret)。
    • 使用jwt.encode()函数生成JWT令牌并打印它。
  4. 解码JWT

    • 添加用于演示JWT解码的HTML标记。
    • 使用与编码相同的秘密和算法,使用jwt.decode()函数解码先前生成的JWT(token)。
  5. PDF生成

    • 使用ChromePdfRenderercontent HTML字符串渲染为PDF文件,并将生成的PDF文件保存为“Demo-pyjwt.pdf”。

此设置允许创建一个PDF文件,展示使用JWT与IronPDF生成专业质量的PDF。

输出

PyJWT Python(如何工作:开发者指南):图3 - 示例控制台输出

PDF

PyJWT Python(如何工作:开发者指南):图4 - 使用IronPDF的示例PDF输出

IronPDF 许可证

PyJWT Python(如何工作:开发者指南):图5 - IronPDF许可页面

IronPDF提供试用许可证密钥,以允许用户在购买之前检出其广泛的功能。

在使用IronPDF包之前,将许可证密钥放在脚本开头:

from ironpdf import License

# Apply your license key
License.LicenseKey = "your-key"
from ironpdf import License

# Apply your license key
License.LicenseKey = "your-key"
PYTHON

结论

PyJWT是一个强大且灵活的库,用于在Python中处理JSON Web Tokens。 其易用性和对多种算法的支持使其成为在Web应用中实现基于令牌的身份验证和安全信息交换的热门选择。 另一方面,IronPDF是一个多功能且功能丰富的PDF生成库,可以帮助以标准方式记录结果。 这两个库都可以为开发者提高技能提供极大帮助。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。