我一直在关注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)
我的问题是将auth令牌放在重定向方法中导致页面显示为"重定向...您应该被重定向,如果没有点击这里",我不想要。我并不特别希望将我的重定向方法更改为类似于make_response(jsonify(...))
的方法,因为当这是一个简单的登录页面时,我需要在前端处理这些响应。
我应该如何正确地将身份验证令牌返回给客户端?
答案 0 :(得分:1)
通常,您将其附加到您的redirect
方法返回的响应标头中。
response = redirect(url_for('home'))
response.headers['X-JWT-TOKEN'] = auth_service.encode_token(username)
return response
但是,我不确定使用render_template
时这在您的设置中是否很有用,因为您无法轻松地在前端访问这些标头。
您在这里有两种选择: