Flask は JWS の ID 検証を実装します

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 不存在")

[記事を書くのは簡単ではありません。転送する必要がある場合は著者に連絡してください。

おすすめ

転載: blog.csdn.net/qq_46170664/article/details/123015381