【问题标题】:Flask return JWT token when redirectingFlask 重定向时返回 JWT 令牌
【发布时间】:2018-08-08 16:29:29
【问题描述】:

我一直在关注this Flask pyjwt 指南,但是我的网络应用程序有点类似于使用render_template()redirect(url_for(...)) 进行导航的Miguel's microblog example

我已经在我的应用程序中实现了编码和解码服务,但是我不知道如何使用 redirect() 正确地将编码的 JWT 令牌返回给用户

我的代码如下:

@app.route('/', methods=['GET', 'POST'])
def login():
    login_form = LoginForm()
    username = login_form.username.data
    password = login_form.password.data

    if is_user_valid(username, password):
        return redirect(url_for('home'), auth_service.encode_token(username))
    render_template('login.html', form=login_form)

我的问题是将身份验证令牌放在重定向方法中会导致页面显示“正在重定向...如果不单击此处,您应该被重定向”,这是我不想要的。我并不特别希望将重定向方法更改为类似于make_response(jsonify(...)) 的方法,因为当这是一个简单的登录页面时,我需要在前端处理这些响应。

我应该如何正确地将身份验证令牌返回给客户端?

【问题讨论】:

    标签: python flask jwt pyjwt


    【解决方案1】:

    通常您将其附加到响应标头,这是您的 redirect 方法返回的内容。

    response = redirect(url_for('home'))
    response.headers['X-JWT-TOKEN'] = auth_service.encode_token(username)
    return response
    

    但是,我不确定这在使用 render_template 时是否对您的设置非常有用,因为您无法在前端轻松访问这些标头。

    这里有两种选择:

    • 使您的登录端点成为 API。这样您就可以返回令牌以供客户端代码以某种方式处理和存储它。
    • 放弃 JWT 并坚持使用会话。我知道这不是您所期望的,但在构建 API 之外,基于 JWT 的身份验证并不是很有帮助。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 2018-11-18
      • 2021-03-05
      • 2021-01-22
      • 2021-11-19
      • 2021-04-16
      • 2022-09-28
      • 1970-01-01
      相关资源
      最近更新 更多