由於http是無狀態保存的協議,session可以看作不同請求之間保存數據的一種機制。flask的session是基於cookie的會話保持。
流程
- 當客戶端進行第一次請求的時候,客戶端的HTTP request到服務端,
- 服務端的視圖函數創建session
- 請求結束時,把session的值寫入響應的cookie中,並返回給瀏覽器,這樣瀏覽器大的cookie中就包含了用戶的色Esso排名內容
- 用戶再次請求時,客戶端已經在cookie中保存了用戶的數據,如用戶名密碼等信息。
使用
secret
在說到session使用就不得不提到secret,secret_key的本質就是一個加密鹽,加密的強度取決於變量值的復雜度,可以自己定義明文為鹽,也可以使用os.urandom()來生成,我簡單地在網上瀏覽了一下,都建議使用os.random(24),當然不同程序使用不同的密鑰,不是非要高密度,它會影響到數據在傳輸和存儲時的復雜度,由於flask的特性,它把session的key存儲在客戶端的cookie中,通過這個key可以從flask的內存中獲取用戶的session信息,出於安全性考慮,使用secret_key進行加密處理。
1,設置secret_key
import os
from flask import Flask
app = Flask(__name__)
app.secret_key(os.urandom(24))
2,生成session
session["user"] = request.form.get('username')
3,驗證session
session.get("user") #/session["user"]也可以