關於django用戶登錄認證中的cookie和session
最近弄django的時候在用戶登錄這一塊遇到了困難,網上的資料也都不完整或者存在缺陷。
寫這篇文章的主要目的是對一些剛學django的新手朋友提供一些幫助。前提是你對django中的session和cookie已經有了一定的了解。
我最基本的設想是當用戶登陸了網站後,用戶訪問本網站的其他網頁時依舊能識別其身份。
很多教程的方法是在用戶的cookie中存儲用戶名,這種方法當然是非常不安全的。
其實只要我們使用了django中的session,django就會自動在用戶的cookie中存儲 sessionid ,用以識別用戶。
比如,我們設計了一個用戶登錄的視圖
其中我們使用了 request.session[‘username‘] = username 來使用session保存用戶名。
這樣一來django便會自動設置在cookie中存儲sessionid
我們來試驗一下。
1.首先打開login頁面,可以看到這時候cookie中只有我們的csrf的token
2.這時我們嘗試登陸
3.登陸成功後,系統會為我們分配一個sessionid
4.這時假設我們在設計一個主頁的視圖,嘗試根據session獲取用戶名,如果獲取不到則說明,用戶未登錄
5.我們進入該頁面,由於之前我們cookie中的sesionid還在,所以這裏會顯示我們的用戶名
7.假如我們要登出,我們只需要使用session的 flush函數,django便會刪除session以及用戶cookie中的sessionid,視圖如下
8.在我們登出之後,我們在刷新之前的主頁,我們會發現,我們變成了遊客,cookie中的sessionid也被刪除,這說明我們的思路是沒有錯誤的,當然這只是最基本的用戶登錄思路,真正實用時,我們需要進一步完善我們的認證系統。
關於django用戶登錄認證中的cookie和session