Python 重定向时返回JWT令牌

Python 重定向时返回JWT令牌,python,flask,jwt,pyjwt,Python,Flask,Jwt,Pyjwt,我一直在遵循指南,但我的web应用程序有点类似于使用render\u template()和重定向(url\u表示(…)进行导航的应用程序 我已经在我的应用程序中实现了编码和解码服务,但是我不知道如何使用redirect() 我的代码如下: @app.route('/', methods=['GET', 'POST']) def login(): login_form = LoginForm() username = login_form.username.data pa

我一直在遵循指南,但我的web应用程序有点类似于使用
render\u template()
重定向(url\u表示(…)
进行导航的应用程序

我已经在我的应用程序中实现了编码和解码服务,但是我不知道如何使用
redirect()

我的代码如下:

@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)
我的问题是将auth令牌放在redirect方法中会导致出现一个页面,上面显示“重定向…如果不单击此处,则应重定向”,这是我不希望看到的。我并不特别希望将我的重定向方法更改为类似于
make_response(jsonify(…)
,因为当这是一个简单的登录页面时,我需要在前端处理这些响应


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

通常,您会将其附加到响应头上,而响应头正是您的
重定向
方法返回的

response = redirect(url_for('home'))
response.headers['X-JWT-TOKEN'] = auth_service.encode_token(username)
return response
但是,我不确定这在使用
render_template
时是否对您的设置非常有用,因为您无法在前端轻松访问这些标题

这里有两种选择:

  • 使登录端点成为API。通过这种方式,您可以返回令牌,以便客户端代码以某种方式处理和存储它
  • 放下JWT,坚持使用会话。我知道这并不是您所期望的,但在构建API之外,基于JWT的auth并没有多大帮助