【发布时间】:2020-06-19 07:28:57
【问题描述】:
我有一个 Flask 应用程序,它使用自定义装饰器来验证在 HTTP 标头属性中传递的 AWS Cognito 登录令牌。该过程包括刷新令牌(这超出了本问题的范围)。获得刷新的令牌后,我想更新标头属性以包含刷新的令牌并退出。由于 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
【问题讨论】:
-
请检查此link 是否可以回答您的问题?
标签: http flask http-headers werkzeug