3

app.py で、flask-jwt-extended を次のように初期化しました。

# Setup the Flask-JWT-Extended extension
app.config['RESTPLUS_MASK_SWAGGER'] = False # remove default X-Fields field in swagger
app.config['JWT_SECRET_KEY'] = 'super-secret'  # Change this!
app.config['JWT_BLACKLIST_ENABLED'] = True
app.config['JWT_BLACKLIST_TOKEN_CHECKS'] = ['access', 'refresh']
jwt = JWTManager(app)

次に、スニペットを使用してログインでトークンを作成します。

            expires = datetime.timedelta(minutes=10)
            access_token = create_access_token(identity=payload['email'], fresh=True, expires_delta=expires)
            refresh_token = create_refresh_token(identity=payload['email'])

不思議なことに、デコレータ @jwt.token_in_blacklist_loader を特定のエンドポイントに追加すると、「トークンが取り消されました」というエラー メッセージが常に表示されました。

@jwt.token_in_blacklist_loader
@api.route('/')
class UserList(Resource):
    @jwt_required
    @api.doc('list_users')
    @api.marshal_list_with(user)
    def get(self):
        '''Get all users'''
        users = UserApi.query.all()
        return users

私が知る限り、このデコレータはトークンがブラックリストに登録されているかどうかを確認し、ログインから新しいトークンを作成するだけです。新しいトークンを作成してトークンがブラックリストに登録されているかどうかを確認するベストプラクティスは何ですか?

4

2 に答える 2