我目前在我的django應用程序中使用默認的數據庫支持的會話模型。前端是一個與REST API接口的SPA,並且具有異步登錄功能,以便用戶在會話超時後不會丟失頁面。我試圖檢測會話何時在瀏覽器中超時,以便可以顯示登錄模式。如何判斷一個基於django數據庫的會話是否在瀏覽器中過期?
但是:
- 如果
User
不再被授權執行API請求 ,因爲他們不再登錄,他們得到一個HTTP403。 - 如果
User
嘗試訪問屬於其他Users
, 的對象實例,則它們也會獲得HTTP403。
所以我需要區分兩個403s。我的直接反應是比較sessionid
餅乾和now
到期,但:
- 的Cookie是
httpOnly
- 到期未設置
因此我的問題:我怎麼能告訴,在瀏覽器中,如果我的django會話已過期?
您可以HTTP401當用戶未授權和HTTP403如果用戶試圖訪問屬於其他用戶 – viveksyngh
這不正是你問什麼,但我想你會更好使用智威湯遜,而不是對象實例會話。它更適合用於REST API,您可以定期刷新令牌,並且可以使用Javascript對令牌進行解碼以檢索到期時間,以便在不發出HTTP請求的情況下檢查它是否已過期。如果您使用的是Django REST框架,那麼使用JWT就很簡單。 –
我打算接受401答案,因爲這是我問的問題的答案,但我同意代幣會更好。謝謝! – Escher