JWT基本介绍与使用

news/2024/10/6 5:37:25/文章来源:https://www.cnblogs.com/cs-songbai/p/18289163

★ JWT基本概念

JWT(JSON Web Token)是一种用于在网络应用之间传递信息的安全方式。它是一种基于 JSON 的开放标准(RFC 7519),用于在网络应用之间安全地传输声明。JWT 通常用于身份验证和授权,以及在分布式系统中传递声明。

★ JWT组成部分

JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。其中,头部和载荷都是 JSON 对象,签名是对头部和载荷进行加密后的字符串。

★ JWT 的使用流程

1. 用户向服务器发送身份验证请求,服务器验证用户身份并生成 JWT。
2. 服务器将 JWT 发送回客户端,客户端将其存储在本地。
3. 客户端向服务器发送请求时,将 JWT 作为请求头部的 Authorization 字段发送给服务器。
4. 服务器验证 JWT 的签名和有效期,并根据其中的声明进行授权。

★ JWT 的优点

无状态:JWT 中包含了所有必要的信息,因此服务器不需要在自己的数据库中存储用户信息,从而使得服务器可以更容易地扩展。
跨平台:由于 JWT 是基于 JSON 的开放标准,因此它可以在不同的编程语言和平台之间进行交互。
安全性:JWT 使用签名来验证数据的完整性和真实性,从而保证了数据的安全性。

★ JWT 说明

需要注意的是,JWT 中的信息是可以被解码的,因此不应该在 JWT 中存储敏感信息。此外,JWT 的有效期应该设置得足够短,以避免被恶意利用

★ JWT 使用示例

"""
pip install PyJWT
"""
import jwt
import datetime# -------------------------JWT生成-----------------------------
# 设置密钥
secret_key = 'my_secret_key'
# 设置过期时间
expires_in = datetime.datetime.utcnow() + datetime.timedelta(minutes=30)
# 设置载荷
payload = {'website': 'stu_manage','user_id': 123,'exp': expires_in
}# 生成JWT
jwt_token = jwt.encode(payload, secret_key, algorithm='HS256')
print(jwt_token)# -------------------------JWT解析-----------------------------
# JWT解析(验证 JWT 签名)
decoded_token = jwt.decode(jwt_token, secret_key, algorithms=['HS256'])
# 解密后的 JWT 载荷
print(decoded_token)
print(datetime.datetime.fromtimestamp(decoded_token['exp']))
# 读取JWT头部header
print(jwt.get_unverified_header(jwt_token))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/740039.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

es8.x 版本使用及 java api client

1.为什么不使用High Level REST Client 了 那在 ElasticSearch 7.15.0 版本开始,官方又不建议使用 High Level REST Client 了,为什么呢?因为它是基于原生的 REST API,而这些 API 在某些情况下限制了某些功能的性能优化。与此同时,官方也推出了 Elasticsearch Java 客户端…

7.7-DPday1

动态规划理论基础什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的 在关于贪心…

gitlab私有仓库搭建

安全:关闭防火墙,selinux 1.安装GItlab所需的依赖包 yum install curl policycoreutils-python openssh-server postfix wget -y安装gitlab 获取gitlab源码包 选择各种yum源去安装 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.3-ce.0.el7.x86_64…

[LeetCode] 134. Gas Station

想到了提前判断和小于0的情况,懒得写,果然被阴间用例10万个加油站坑了。 class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:#1n = len(gas)if n ==1:if gas[0] >= cost[0]:return 0else:return -1#-1startpoint =[gas[x] - cost[…

算法金 | 推导式、生成器、向量化、map、filter、reduce、itertools,再见 for 循环

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」不要轻易使用 For 循环 For 循环,老铁们在编程中经常用到的一个基本结构,特别是在处理列表、字典这类数据结构时。但是,这东西真的是个双刃剑。虽然看起来挺直白,一…

(三)变分自动编码器

过去虽然没有细看,但印象里一直觉得变分自编码器(Variational Auto-Encoder,VAE)是个好东西。于是趁着最近看概率图模型的三分钟热度,我决定也争取把VAE搞懂。于是乎照样翻了网上很多资料,无一例外发现都很含糊,主要的感觉是公式写了一大通,还是迷迷糊糊的,最后好不容…

大气热力学(8)——热力学图的应用之一

本篇文章源自我在 2021 年暑假自学大气物理相关知识时手写的笔记,现转化为电子版本以作存档。相较于手写笔记,电子版的部分内容有补充和修改。笔记内容大部分为公式的推导过程。 目录8.1 复习斜 T-lnP 图上的几种线8.1.1 等温线和等压线8.1.2 干绝热线8.1.3 湿绝热线8.1.4 等…

(二)变分贝叶斯

变分 对于普通的函数f(x),我们可以认为f是一个关于x的一个实数算子,其作用是将实数x映射到实数f(x)。那么类比这种模式,假设存在函数算子F,它是关于f(x)的函数算子,可以将f(x)映射成实数F(f(x)) 。对于f(x)我们是通过改变x来求出f(x)的极值,而在变分中这个x会被替换成一个…

03-码出高效:Java开发手册.pdf

03-码出高效:Java开发手册.pdf 03-码出高效:Java开发手册.pdf ​​ ​​ ‍ ​​ ‍ ‍

Franka Emika Datasheet(技术参数)

任何人均可随时随地实现自动化。 Franka Emika 是德国慕尼黑的一家深科技公司,该公司致力于创造全新的机器人平台技术,提高性能,改善每个人的访问便捷 性,从而克服现代社会面临的最大难题之一,让整整一代人摆脱枯燥乏味、存在潜在危险且极其耗时的劳动和工作。为了实现高 …

Ubuntu 22.04搭建MC原版服务端

首先下载 JAVA 版服务器 https://www.minecraft.net/zh-hans/download/server服务器下载java 21。这里我看了需求,如果你开mc服务器从1.20.5(24w14a)开始,运行Minecraft的最低要求是Java 21,且操作系统要求为64位。 apt install openjdk-21-jdk 运行就行。java -Xmx1G -Xm…

小学期第一周(7.1-7.7)

7.1 周一 为啥被人学校都放假了我们还有小学期【微笑] 开玩笑其实我高兴得很,毕竟我是如此热爱学习 今天小学期一人分了四道题我把每道题都看了看答案最后选了四道代码比较少的,这样验收的时候还简单点 什么?问我为什么从网上 找答案不自己写?那我也得会写才行啊,我的基础…