Я хочу проверить, проверен ли пользователь до того, как он сможет получить доступ к этому методу, поэтому я написал декоратор с именем 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
не называется. BTW, его мой первый раз написание декоратора, чтобы я мог быть совершенно неправ. Спасибо за любые ответы
Вы никогда не называете 'f' внутри' wrapper', поэтому, когда вы ожидали, что это произойдет? – jonrsharpe