関数へのアクセスを許可する前に、ユーザーのトークンを認証するデコレータを実装しようとしています。私の現在の実装は、デコレータでローカルを取得できないため、2 つのクエリを実行する必要があるという点で、ちょっと不安定です。これを行うより良い方法はありますか?
def require_auth(func):
print 'require_auth'
@wraps(func)
def inner():
if 'token' in request.json:
token = request.json['token']
session = Session()
for instance in session.query(SQLTypes.User).filter(SQLTypes.User.token==token):
auth_user = instance.username
try:
auth_user
print 'authenticated!'
except NameError:
abort(401)
else:
abort(401)
return func()
return inner
@app.route('/st/projects', methods=['POST'])
@require_auth
def post_project():
session = Session()
for instance in session.query(SQLTypes.User).filter(SQLTypes.User.token==request.json['token']):
auth_user = instance.username
# do something with auth_user
session.close()