我試圖在我的Flask應用程式中保存由request.headers提供的物件。
我想在頁面加載時渲染我的index.html,但我也想抓取訪問用戶的電子郵件,以便我可以將其用于其他功能/流程。
# routes
@app.route('/')
def index()。
return render_template('index.html'/span>)
def find_aad()。
aad_email = request.headers.get('X-MS-CLIENT-PRINCIPAL-NAME') # aad mail
return aad_email
如果我嘗試單獨運行find_aad(),
user_email = find_aad() # cant run
我將得到典型的錯誤。在請求背景關系之外作業。
我怎樣才能在請求背景關系之外作業?
我怎樣才能在網站的初始加載中保護這些頭資訊并將其保存到一個物件中而不出現這些錯誤呢?
uj5u.com熱心網友回復:
你可以這樣做,也許:
在第一次呼叫索引時,您可以為 "會話 "創建一個 UUID,并將其作為用戶的識別符號,然后您將該代碼傳回到渲染的 UI 元素中,以便在客戶端進行存盤。然后,在隨后對后端進行的每一次呼叫中,你將該 UUID 與請求的其余部分一起發送。
在這些后續請求中,您可以通過該 UUID 訪問電子郵件值,該 UUID 是您用于在后端存盤客戶端資訊的資料結構的關鍵。
這個概念就是在客戶端/服務器通信中常見的帶有 "會話 ID "的 "會話 "概念。使用套接字,甚至可能是Flask的內置或補充庫,可能是一個好主意,而不是 "自己滾動"。如果我說的不中聽或愚蠢,請原諒--我現在很晚了。
編輯:
根據要求,這里有一些簡單的偽代碼:
fromflask import Flask
import uuid
...
uuid_to_email = {}。
...
@app.route('/'))
def index()。
user_id = str(uuid.uuid4() )
uuid_to_email[user_id] = request.headers.get('X-MS-CLIENT-PRINCIPAL-NAME'/span>)
return render_template('index.html', uuid=user_id) # 其中暗示你將在客戶端代碼中使用uuid來講述它并將它傳回給你想做的端點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/317189.html
標籤:
上一篇:用一個(偽)可變的Map呼叫一個函式(并改變Map)。
下一篇:如果我保留公鑰并公布私鑰呢?
