【发布时间】:2021-07-20 10:10:39
【问题描述】:
我正在使用 Flask-JWT-Extended (https://pypi.org/project/Flask-JWT-Extended/) 来保护我的烧瓶应用程序。 jwt_required 装饰器将 optional 作为参数。尽管如此,我的烧瓶应用程序是在一个类中创建的,我无法在实例化该类之前设置 optional 参数。
这是我尝试过的:
from flask import Flask, jsonify
from flask_jwt_extended import jwt_required, JWTManager
jwt_optional = False
class Node:
def __init__(self, name: str, key: str, jwt_opt: bool = False):
self.app = Flask(name)
self.app.config['SECRET_KEY'] = key
global jwt_optional
jwt_optional = jwt_opt
self.app.add_url_rule(rule='/get_token',
endpoint='get_token',
view_func=self.get_token,
methods=['GET'])
@jwt_required(optional=jwt_optional)
def get_token(self):
print('Token success')
return jsonify({'msg': 'Token success'})
if __name__ == '__main__':
node = Node('Test Node', key='unsafe', jwt_opt=True)
app = node.app
app.config['TESTING'] = True
jwt = JWTManager(app=app)
test_app = app.test_client()
response = test_app.get('/get_token')
print(response.json)
我想很明显它不起作用,因为在我更改全局变量之前对装饰器进行了评估。
是否可以在运行时将令牌设为可选?
【问题讨论】:
标签: flask jwt flask-jwt-extended