FastApi-19-Token校验

本文介绍如何使用jose库进行JWT Token的生成与校验,包括秘钥、有效载荷及有效期的验证过程。通过具体示例展示了正确的Token校验方法及错误Token的处理方式。

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

上节内容,我们已经介绍了 token 的生成,是直接使用的第三方库 jose,当然 jose 可以生成 token,想必他也可以校验 token 了。

Part1token 校验

代码

from jose import jwt
# 导入token校验的两种异常,一种是token超时异常,一种是token错误异常
from jose.exceptions import ExpiredSignatureError, JWTError
def judge_token(token):
    # 尝试解密,解密成功后,秘钥,payload,有效时长校验通过,则会返回payload
    try:
        payload = jwt.decode(token,SECRET_KEY)
        print(payload)
        return True

    # 否则,则捕获异常,进行提示
    except ExpiredSignatureError as e:
        print('token过期了!')
        return False
    except JWTError as e:
        print('token验证失败!')
        return False

按照传统的 jwt 协议,我们需要解密 token 后,对 token 的秘钥,payload,有效时长进行单独的校验。以上,token 的秘钥,payload,有效时长,jose 都帮我们完成了,我们只需要调用 jose.jwtencodedeode 就可以完成加解密。

执行校验

if __name__ == "__main__":
    tk=create_token()
    print(tk)
    res1=judge_token(tk)
    print(res1)
    import time
    time.sleep(60)
    res2=judge_token(tk)
    print(res2)

执行结果

> python utm.py
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTI1Mjg0MzYsInN1YiI6InBoeWdlciIsInVpZCI6IjEyMzQ1NiJ9.yVhoAKyZFvQi3q4wqd1JoRondl9A6wUaALueP00oyhc
{'exp': 1612528436, 'sub': 'phyger', 'uid': '123456'}
True
token过期了!
False```
> 因为默认token的有效期为60秒,我们在第二次校验token前睡眠了61秒,所以第二次的校验结果为过期!

**使用错误的token校验**
```python
if __name__ == "__main__":
    res=judge_token('phyger666')
    print(res)

以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

往期推荐

IO被谁吃了?

Gevent | 异步就用它!

5分钟带你了解Scrum

FastApi-18-Token生成

Jmeter测试TCP百万连接

5分钟学会本地Pypi源搭建

jenkinsclient | 好用的jenkins客户端

PySimpleGUI经典实践之:这个汉字怎么读?

点亮在看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值