據Persistent Login Cookie Best Practice,你不應該允許「記住我」令牌競爭條件使用不止一次:持久性「記住我」餅乾
永久Cookie是很好的一個單點登錄。當確認身份驗證時,用於登錄的隨機數無效,並分配一個全新的Cookie。標準會話管理處理會話生命期的憑證,因此新分配的cookie在下次會話之前不會被檢查(在這一點上它也會在使用後失效)。
然後,如何處理用戶在同一時間訪問您網站上的多個URL的競爭情況?我實際上現在有這個問題。
假設兩個請求同時從瀏覽器發送到服務器。這些請求不包含會話cookie,但包含相同的「記住我」cookie。其中一個請求將在另一個之前處理,並且將通過經過驗證的會話cookie和重新生成的「記住我」cookie獲得響應。
第二個請求中的「記住我」令牌現在已失效並且在服務器上生成另一個會話ID。此請求失敗,因爲用戶無法通過身份驗證。
我想出了一些可能的解決方案,但沒有一個看起來很好。我錯過了什麼嗎?
我開始意識到問題是由於http是無狀態的。如果「記住我」令牌沒有立即失效,那麼響應仍會返回不同的會話(並且瀏覽器會覆蓋最後一個會話的舊會話)。 – 2011-05-10 13:22:48