1. 程式人生 > >關於django用戶登錄認證中的cookie和session

關於django用戶登錄認證中的cookie和session

技術 ima username 就會 關於 logs 之前 cookie req

最近弄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