這是一個晦澀難懂的問題,我相信我正在尋找一些東西。我運行的Flask應用程序使用flask.session
在用戶會話中存儲了非常基本的字符串。flask.session在所有連接中共享
服務器設置爲通過Nginx -> uwsgi (emperor mode) -> Flask application
。
下面是一個裝飾我關於請求某些@app.route()
包裹函數使用,所以這樣我可以驗證該信息是在會話:
def verify(method):
@wraps(method)
def wrapper(*args, **kwargs):
data = flask.request.get_json() or flask.request.form or flask.request.args
if 'name' in flask.session:
return method(*args, **kwargs)
elif data.get("name"):
if is_user(data.get("name")):
flask.session['name'] = data.get("name")
return method(*args, **kwargs)
return flask.jsonify(success=False, message='Incorrect information supplied.')
else:
return flask.jsonify(success=False, message='Not all information supplied.')
return wrapper
我正在利用以上的示例方式,以及訪問會話:
@app.route('/api/user')
@verify
def api_route():
# .. misc code here ..
return flask.jsonify(success=True, user=flask.session['name'])
現在..可以說我使用Chrome訪問,並確保會話設置。現在,我去一些隨機的服務器,捲曲特定的API端點,它的拉動會話我的瀏覽器份額:
[~]$ curl -4s https://domain.com/api/user
{
"success": true,
"user": "liam"
}
我相信這可能是由於Nginx的和/或uwsgi,但我不確定。我對Nginx和其他各種網站使用了相同的配置,我從來沒有見過這樣的問題。
以前看過嗎?我還有另外一種方式與會議合作嗎?我可以提供的任何其他信息指向正確的位置?
編輯:
我不Nginx的和uwsgi測試這和問題仍然存在。沒有任何中間人扮演的角色。