gpt4 book ai didi

python - 使用 header 中的 token 登录后 Flask 重定向

转载 作者:可可西里 更新时间:2023-11-01 17:25:54 27 4
gpt4 key购买 nike

我是 web 开发的新手,我正在尝试使用 flask 为学校项目做一个 web 服务器。问题是,登录后,我想重定向到另一个需要身份验证的页面,并通过 header 传递授权 token 。然而,页面卡住,显示 Redirecting... 并说我应该被自动重定向(这并没有发生)。

这是登录 POST 和重定向页面的代码。

@app.route('/login', methods=['POST'])
def login_verify():
username = models.User.query.get(request.form['username'])
if username == None or username.verify_password(request.form['password']) == False:
abort(401)
redir = redirect(url_for('map'))
redir.headers = {'headers':username.encode_auth_token()}
return redir

@app.route('/map')
def map():
token = request.headers.get('headers')
if token == None or models.User.decode_auth_token(token) == None:
abort(403)
deviceList = list(db.session.query(models.Location.terminalId.distinct()).all())
return render_template('seeLocations.html',token = str(token),deviceList = deviceList)

我也试过这个(并且成功了),但 token 不应作为 URL 参数出现。

return redirect(url_for('map',headers=username.encode_auth_token()))

最佳答案

您在这里遇到的主要问题是您覆盖了重定向响应的 headers。此响应设置了诸如 Location 之类的 header ,以告诉客户下一步要去哪里,但是您在分配时将它们清除了。这也是客户端不自动重定向的原因。

我想你想要的是:

def login_verify():
...
redir = redirect(url_for('map'))
redir.headers['headers'] = username.encode_auth_token()
return redir

关于python - 使用 header 中的 token 登录后 Flask 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638855/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com