1. 程式人生 > >8、Django實戰第8天:session和cookie自動登錄機制

8、Django實戰第8天:session和cookie自動登錄機制

src exp 密碼登錄 spa 一個 實現 服務器 技術 狀態

因為http是無狀態協議,因此,並不會記錄用戶的登錄狀態。在早期,是直接把用戶名和密碼等信息存儲在瀏覽器的cookie來實現記錄用戶密碼登錄。

但是這樣存在安全隱患,只要別人登錄你的電腦cookie信息,就取得了用戶名和密碼等重要信息。

為了解決這個問題,我們使用了session技術

在Django中,當我們輸入用戶名、密碼登錄後。它調用login,這個login根據用戶信息生成了一個session,生成的session信息會保存到數據表當中(django_session表),這個表會根據用戶的信息進行加密生成session_data

技術分享圖片

技術分享圖片

session_key: 就是服務器給用戶返回的id, 在瀏覽器當中,這個值是保存為sessionid

session_data: 這是一個加密後的信息,用來保存用戶名和密碼等信息

expire_data: 過期時間,Django可以設置過期時間

那麽Django是如何獲取到客戶端傳給我們的session信息呢?在settings.py中,有下面一行配置,它會攔截到session信息,然後根據sessionid去數據庫中查找,如果找到,則對session_data進行解密。如果我們把這行註釋掉,自動登錄就會失效

技術分享圖片

8、Django實戰第8天:session和cookie自動登錄機制