python自带jwt库使用

本文深入讲解了JSON Web Token(JWT)的加密与解密过程,包括使用Python进行JWT的生成与验证,以及如何在Django中实现基于JWT的用户身份认证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import jwt
import time

#加密
jwt.encode({payload},key,algorithm)
#key:自定义的字节串或字符串
#payload:具体内容自己添加,分为公有声明和私有声明,字典类型
#algorithm:使用的哈希算法
#返回值为字节串
#示例:
key = xxx
exp = yyy
now_time = time.time()
token = jwt.encode({'username':'Terry','exp':int(now_time+exp)},key,algorithm='HS256')


#解密
jwt.decode(token,key,algorithm)
e.g. jwt.decode(token,TOKEN_KEY,algorithms='HS256')

#校验内容
1. 比对从token中取出的key对应的值,和各种请求中传来的值
2. 查看时间是否过期
如果不对,解密时报错

django 从token中取出用户名并从数据库中取出该用户对象

def get_user_id(request):
	#取token
	token = request.META.get('HTTP_AUTHORIZATION')
	#若没取出token,则用户未登录
	if not token:
		return None
	
	#若token不对,返回一个none
	try:
		res = jwt.decode(token,TOKEN_KEY,algorithms='HS256')
	except Exception as e:
		return None
	
	#如果没报错,拿出username
	username = res['username']
	#从数据库中取出用户对象
	users = UserProfile.objects.filter(username=username)
	if not users:
		return None

	user = users[0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值