上节内容,我们已经介绍了 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.jwt
的 encode
和 deode
就可以完成加解密。
执行校验
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)
以上就是今天的全部内容了,感谢您的阅读,我们下节再会。
完