我瞭解Flask-login的方式是,一旦通過身份驗證,它就會設置一個cookie,其中包含隨每個請求一起發送的用戶ID,以便服務器可以將請求與(登錄)用戶。用戶ID幾乎被編碼爲用戶ID和一些瀏覽器設置(用戶代理,我認爲)的功能。使用flask-login確保單個用戶每個帳戶
由此產生了一些問題,也許有人可以對它們發表評論並提出解決方案。
- 客戶端可以通過猜測用戶標識並使用相同的cookie編碼功能來請求內容(如果它僞裝成登錄用戶)。
- 多個用戶可以在兩臺不同的計算機共享帳戶憑據時使用同一個用戶帳戶(我想限制這一點,但我想允許用戶在一臺計算機上打開同一會話的多個選項卡)。
我可以實現一個服務器端機制,該服務器端機制在身份驗證時生成一個隨機祕密令牌,並與用戶記錄一起存儲,併成爲會話cookie。我可以使用它來確保只有經過身份驗證的用戶纔可以在單臺機器上登錄(希望一臺機器上的多個選項卡仍在工作)。 flask-login是否已經包含這樣的方法,並且這通常是一個好方法來滿足我的需求?
您可能想要將用戶限制在單個會話中,但我希望聽到我說:請不要。您應該將會話視爲基礎層(匿名用戶),然後用戶帳戶在登錄時鏈接到會話。臨時狀態應與會話關聯,而不是用戶帳戶。許多網上商店已經這樣做了:例如,每個會話中的購物車都是獨立的。要「轉移」購物車,許多網站都會讓您保存購物車並在任何會話中重新打開。 – sleblanc 2015-04-03 11:28:47
除了在URL和認證會話中編碼的內容之外,我不必維護任何臨時狀態。這不適用於我的情況。 – orange 2015-04-03 13:56:18