Python 重定向时返回JWT令牌
我一直在遵循指南,但我的web应用程序有点类似于使用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
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并没有多大帮助