我正在运行FLASK应用程序,在其中检查索引端点中的JWT。问题是执行此端点时得到2个响应。
127.0.0.1 - - [06/Dec/2018 17:38:21] "GET / HTTP/1.1" 302 -
127.0.0.1 - - [06/Dec/2018 17:38:21] "GET /home HTTP/1.0" 200 -
我的代码是
@app.route('/')
def index():
try:
encoded_jwt=request.headers.get('jwt')
print(encoded_jwt)
secret = "-----BEGIN PUBLIC KEY----- ........"
claims = jwt.decode(encoded_jwt, secret)
print(type(claims))
import json
json_parse = json.loads(json.dumps(claims))
email = json_parse['http://wso2.org/claims/emailaddress']
print(email)
roles = json_parse['http://wso2.org/claims/role']
print(roles)
session['email'] = email
if ROLETAGOFADMIN in roles:
role="admin"
elif "" in roles:
role = "employee"
else:
role=None
session['role'] = role
if 'email' in session and (session['role'] == "admin" or session['role'] == "employee" )and request.method == "GET":
if 'lastpage' in session:
lastpage=session['lastpage']
print(lastpage)
session.pop('lastpage')
return redirect(lastpage)
else:
return redirect(url_for('home'))
else:
return "Sorry. Unfortunately You have no access."
except Exception as e:
return redirect(url_for('error'))
由于第一个响应,我的身份服务器正在重定向。我找不到解决该问题的方法。我不知道由于try catch导致发生错误。请帮我。
答案 0 :(得分:0)
您正在使用Flask的redirect
发出重定向,该重定向将向客户端发送302响应,并带有Location
header指示客户端转到/home
。然后,客户端必须向该新URL发出请求,客户端最终将获得200响应代码。因此,您在服务器日志中看到两个请求以及302和200响应代码。
此特定行引起了重定向:
return redirect(url_for('home'))
您似乎希望redirect
能够简单地呈现/home
的内容,并将其作为对原始请求的响应返回到/
(例如,单个200响应)。如果那是您真正想要的,则可以使用render_template
(或您在/home
中使用的呈现内容的方式)直接呈现该页面。但是,我建议您保持重定向行为不变。