У меня есть приложение Flask, которое использует собственный декоратор для проверки AWS токена входа в систему Cognito, переданного в атрибуте заголовка HTTP. Процесс включает в себя обновление токена (что выходит за рамки этого вопроса). Как только я получу обновленный токен, я бы хотел обновить атрибут заголовка, чтобы включить обновленный токен и выйти. Поскольку свойство Flask / Werkzeug request.headers
является неизменным, я не могу обновить его обычным способом.
Как я могу обновить заголовки в контексте этого декоратора? Есть ли лучший способ, о котором я не думаю?
Вот пример кода, который демонстрирует проблему:
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
token = request.headers.get('X-MyApp-Auth')
if not token:
return redirect(url_for('login', next=request.url))
# Test for expired token (pseudocode)
if expired(token):
# Refresh the token (pseudocode)
new_token = refresh(refresh_token)
# This is the part where the immutability gets me stuck
request.headers.set('X-MyApp-Auth', new_token)
return f(*args, **kwargs)
return decorated_function