2017-07-30 25 views
0

我目前在我的django應用程序中使用默認的數據庫支持的會話模型。前端是一個與REST API接口的SPA,並且具有異步登錄功能,以便用戶在會話超時後不會丟失頁面。我試圖檢測會話何時在瀏覽器中超時,以便可以顯示登錄模式。如何判斷一個基於django數據庫的會話是否在瀏覽器中過期?

但是:

  • 如果User不再被授權執行API請求 ,因爲他們不再登錄,他們得到一個HTTP403。
  • 如果User嘗試訪問屬於其他Users, 的對象實例,則它們也會獲得HTTP403。

所以我需要區分兩個403s。我的直接反應是比較sessionid餅乾和now到期,但:

  1. 的Cookie是httpOnly
  2. 到期未設置

因此我的問題:我怎麼能告訴,在瀏覽器中,如果我的django會話已過期?

+0

您可以HTTP401當用戶未授權和HTTP403如果用戶試圖訪問屬於其他用戶 – viveksyngh

+1

這不正是你問什麼,但我想你會更好使用智威湯遜,而不是對象實例會話。它更適合用於REST API,您可以定期刷新令牌,並且可以使用Javascript對令牌進行解碼以檢索到期時間,以便在不發出HTTP請求的情況下檢查它是否已過期。如果您使用的是Django REST框架,那麼使用JWT就很簡單。 –

+0

我打算接受401答案,因爲這是我問的問題的答案,但我同意代幣會更好。謝謝! – Escher

回答

0

按照標準HTTP401用於未經授權的訪問。你可以在這裏找到更多關於HTTP401的信息。 https://httpstatuses.com/401

+0

這與OP要求的內容完全無關。你提供了發送401的最後一步,這是正確的,但它不是答案 –

相關問題