Flaskのflask_httpauth(HTTPTokenAuth)


簡単なFlaskAPIを書いて、Tokenは検証します
flask-httpauthパッケージをダウンロードし、itsdangerousパッケージの後者は一時的なアイデンティティトークンを生成し、tokenを検証するために使用されます.
pip install flask-httpauth
pip install itsdangerous

model.pyファイル:(modelファイルのuserクラスにtokenメソッドの生成を追加)
#   token
    @staticmethod
    def generate_auth_token(user_id):
        s = Serializer(Config.SECRET_KEY, expires_in=Config.EXPIRES_IN)
        return s.dumps({'id': user_id}).decode('ascii')

authToken.pyファイル:(tokenファイルの検証)
from flask import g
from flask_httpauth import HTTPTokenAuth
from itsdangerous import SignatureExpired, BadSignature, TimedJSONWebSignatureSerializer as Serializer
from App.models import User
from App.settings import Config
#  HTTPTokenAuth  
authToken = HTTPTokenAuth()

#@authToken.verify_token    HttpTokenAuth  token  
@authToken.verify_token
def verify_authToken(token):
    g.user = None
    s = Serializer(Config.SECRET_KEY)
    try:
        data = s.loads(token)
    except SignatureExpired:
        #        
        return False
    except BadSignature:
        #     token
        return False
    #        ,       token       
    return True

ここまでtokenのファイルを検証して書きました.
      ,        ,         token   .
        token   , `Authorization`      
  Bearer +token   .  verify_authToken(token)     token.
  
headers['Authorization'] = 'Bearer ' + token

プラグインHTTPTokenAuthソースコードを見ると、デフォルトtokenのschemeは:Bearer.
    def __init__(self, scheme='Bearer', realm=None, header=None):
        super(HTTPTokenAuth, self).__init__(scheme, realm, header)

修正するならverify_token(scheme="")