JWS (JSON Web Signature) は JWT (Json Web Token) の実装です。JWS
の実装には通常、次の 2 つのステップがあります。
-
トークンを生成し、そのトークンをコンテキスト シーケンスに保存します: Serializer
-
トークンの検証、データの抽出
1: トークンを生成し、そのトークンをコンテキスト シーケンスに保存します。
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
serializer = Serializer(current_app.config['SECRET_KEY'], expires_in=3600)
# 存入token信息,该数据是可以被解析出来的,因此可以存放任何的数据
data = ['name':'张三']
token = serializer.dumps(data).decode('utf8')
print(token)
return token
2: トークンを検証してデータを抽出します。
フロントエンドはトークンをヘッダーに保存してバックエンドに渡し、バックエンドは検証用のトークンを取得します。
token = request.headers.get(Utils.TOKEN_NAME)
トークンを検証します (トークンは jws で自動的に検証され、トークンの有効期限が切れているか無効な場合は、それぞれ SignatureExpired と BadSignature によって捕捉されます)。
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, SignatureExpired, BadSignature
from flask import g
if token:
# 从上下文中提取配置的值
serializer = Serializer(current_app.config['SECRET_KEY'])
try:
# 校验token,如果token 过期 / 无效则会被捕获,如果正确则会解析出token存入的数据
data = serializer.loads(token)
# 将数据存入g中,g是flask内置定义的一个全局变量,将数据存入g后,可以在项目的任何地方调用g来获取存入的数据
g.data = data
return
except SignatureExpired as e:
print("token 过期")
except BadSignature as e:
print("token 无效")
else:
print("token 不存在")
[記事を書くのは簡単ではありません。転送する必要がある場合は著者に連絡してください。】