メソッドにアクセスする前にユーザーが認証されているかどうかを確認したいので、authorize
というデコレータを書きましたが、デコレータコードだけが実行され、ユーザーが認証されてもメソッドはそれの後に呼ばれる。ここ は、メソッドとデコレータコードです:トラブル理解デコレータ
@authorize
def post(self, **kw):
# store data in database after authentication done using @authorize
def authorize(f):
def wrapper(*args, **kwargs):
secret_key = config.get('auth_secret_key')
auth_message = config.get('auth_message')
if 'HTTP_TOKEN' not in request.environ:
abort(401, detail='Authentication failed', passthrough='json')
gibberish = request.environ['HTTP_TOKEN']
if triple_des(secret_key).decrypt(gibberish, padmode=2).decode() != auth_message:
abort(401, detail='Authentication failed', passthrough='json')
return wrapper
ユーザーが認証の問題がある場合は、401
が発生し、要求が中止されたが、彼が認証された場合、post
メソッドが呼び出されていません。ところで、デコレータを書くのは私の初めてのことなので、私は完全に間違っているかもしれません。任意のお返事ありがとう
あなたは 'wrapper'の中で決して' f'を呼び出すことはありません。いつあなたはそれが起こることを期待しましたか? – jonrsharpe