如何解决使用 uwsgi 提供的 Flask 不会在每个请求上保留会话值
我有一个运行 uWsgi 的 Flask 服务器。 Flask 会话在服务器端实现,会话将保存一个唯一的用户 ID 和用户名字典。我可以登录,但是当它到达主页时,它将再次重定向到登录页面,因为会话对象为空。
这些烧瓶端点是使用 axios 从 reactjs 调用的。 React 与 Nginx 一起服务
这里是登录的代码(validate_user是一个函数,返回true是用户有效)
@app.route('/login',methods=['POST'])
def login():
user_details = request.get_json()
username = user_details['user']
password = user_details['password']
if validate_user(username,password) is True:
user_id = str(uuid.uuid4())
user_response = {
"username": current_user,"id": str(user_id)}
session['user'] = user_response
response = app.response_class(response=json.dumps(user_response),status=200,mimetype='application/json')
这是主页的代码
@app.route('/container/csi',methods=['GET'])
@login_required
def get_csi_data():
print("Get CSI data")
def login_required(function_to_protect):
@wraps(function_to_protect)
def wrapper(*args,**kwargs):
user_id = session.get('user')
print("user id:",user_id)
if user_id is None:
user_response = {"error": "Not authorized,login to continue"}
response = app.response_class(response=json.dumps(user_response),status=401,mimetype='application/json')
return response
else:
return function_to_protect(*args,**kwargs)
return wrapper
我还使用了许多不同答案中所述的静态 secret_key
app.secret_key = "1234"
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = server.sock
https = 0.0.0.0:5000,/path/to/cert,/path/to/key
chmod-socket = 660
vacuum = true
die-on-term = true
启动服务器如下
uwsgi --ini server.ini
观察:
我首先看到“OPTIONS”请求和主页的“GET”请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。