Flask的jws验证

Flask框架 2020-08-29 224

JWS是一种用于签名任意JSON的标准,常用于各种基于Web的技术。

以下根据两个函数介绍如何生成jws

from itsdangerous import BadSignature, SignatureExpired
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer  # 扩展了JSONWebSignatureSerializer,增加了签名过期时间

secret_key = '0w6swswex3+oe-vu@c&z*8d837&fdd2ddoff55bf23'


def gen_token():
    s = Serializer(secret_key, expires_in=3600) # 设置过期时间1小时
    data = {"username": "hhyy", "age": 20}
    token = s.dumps(data).decode('utf8')
    print(token) # eyJhbGciOiJIUzUxMiIsImlhdCI6MTU5ODY4OTIyNSwiZXhwIjoxNTk4NjkyODI1fQ.eyJ1c2VybmFtZSI6ImhoeXkiLCJhZ2UiOjIwfQ.vY_6XTsABNfpeyUiIMOMr5GeVGQPlxlmFWfiu2NJUMNe55wsoCaJCUWHSysedwArK8-UFAqyZHn1Pkd9eoSpZw
    return token

def vali_token():
    token = gen_token()
    s = Serializer(secret_key)
    try:
        result = s.loads(token) # 提取负载中的数据
        print(result)  # {'username': 'hhyy', 'age': 20}
    except (SignatureExpired, BadSignature):
        return False

如果你尝试伪造或者篡改数据会触发SignatureExpired, BadSignature的错误。

标签:Flask框架

文章评论

评论列表

已有0条评论