溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Django中Cookie搭配Session怎么用

發(fā)布時間:2021-09-24 15:50:27 來源:億速云 閱讀:112 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Django中Cookie搭配Session怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Cookie的作用

前面我們說道Django實戰(zhàn)006:Cookie設(shè)置及跨域問題處理,Cookie可以在瀏覽器端保存用戶數(shù)據(jù),當用戶訪問服務(wù)器時會提交Cookie給服務(wù)器,Cookie附加了當前狀態(tài), 服務(wù)器可以通過Cookie來標識用戶的登錄狀態(tài),起到簡單的用戶身份識別和用戶信息記錄等作用。

Django中Cookie搭配Session怎么用

Cookie登錄的實現(xiàn)過程

1.用戶通過form表單提交自己的用戶名和密碼,這通常是一個POST的 HTTP請求。

2.服務(wù)器拿到用戶的信息開始驗證用戶名與密碼,如果與數(shù)據(jù)庫匹配成功我們就返回200同時設(shè)置一個Set-Cookie拋給瀏覽器,通過為‘鍵'=‘值'形式 。

3.瀏覽器接收到服務(wù)器響應(yīng)返回的數(shù)據(jù)和Cookie,然后將Cookie存起來,在開發(fā)者application中可以查看到。

4.瀏覽器再次發(fā)送請求時,將設(shè)置了‘鍵'=‘值'的Cookie再次拋給服務(wù)器,服務(wù)器通過Cookie的字段判斷用戶已經(jīng)登錄,則根據(jù)需求處理用戶請求,否則返回400提示用戶先登錄。

Django中Cookie搭配Session怎么用

Cookie的安全隱患

這就是Cookie的實現(xiàn)過程,這里有個很明顯的問題就是服務(wù)器只要識別到正確的Cookie就會處理對應(yīng)的數(shù)據(jù),那么有心人只要想辦法截獲(很多HTTP客戶端軟件都可以發(fā)送任意的HTTP請求)你的Cookie就可以冒充用戶來訪問該服務(wù)器并獲取到用戶的所有信息,這對用戶來說會存在著極大的安全隱患。

Django中Cookie搭配Session怎么用

Session的引進

session和cookie功能差不多,同樣是用來記錄用戶信息和維持會話狀態(tài)的,但是session是依賴cookie的。session不同在于將用戶數(shù)據(jù)存儲在服務(wù)器端(用戶拿到session內(nèi)的具體內(nèi)容),Cookie則是將數(shù)據(jù)存儲在瀏覽器端,所以相對cookie來說,session相對安全多了,我們只需要在設(shè)置Cookie時附帶上session的id,當用戶再次訪問服務(wù)器時將session的id拋給服務(wù)器進行效驗。

Django中Cookie搭配Session怎么用

Session的啟用

Django中使用session很簡單,Django封裝了session模塊,默認在我們創(chuàng)建項目的時候就已經(jīng)啟用了,在數(shù)據(jù)庫中可以找到一個名為django_session的數(shù)據(jù)庫表,這個就是用來存放session數(shù)據(jù)的。

Django中Cookie搭配Session怎么用

Session的使用

設(shè)置保存session數(shù)據(jù),通過reques.session['鍵']='值'的方式來設(shè)置指定存儲的session信息,通過瀏覽器訪問該視圖就可以將session設(shè)置的信息以base64編碼存入到django_session數(shù)據(jù)庫表中。

Django中Cookie搭配Session怎么用

讀取session數(shù)據(jù),同樣很簡單通過request.session.get('鍵')來獲取對應(yīng)的值,通過該方法可以從django_session數(shù)據(jù)庫表中讀取到對應(yīng)鍵的值。

Django中Cookie搭配Session怎么用

 Session搭配Cookie使用

在cookie中傳入sessionid作為前端的存儲值,這里為了保證sessionid的唯一性,我最簡單的方法是用uuid來生成隨機字符串,再在sessionid中設(shè)置session值,再給set_cookie設(shè)置個過期時間,這樣只要時間一到又會重新生成一個新的sessionid來(如果你覺得uuid4()還是會出現(xiàn)重復也可以自行定義)。

Django中Cookie搭配Session怎么用

在瀏覽器端看到的就是一串隨機的字符串,當用戶訪問服務(wù)器時cookie會把sessionid拋給服務(wù)器,服務(wù)器驗證sessionid對應(yīng)的值是否為django_session數(shù)據(jù)庫表中讀取到對應(yīng)鍵的值,如果是則執(zhí)行數(shù)據(jù)請求操作,否則返回400,告訴前端操作失敗。

Django中Cookie搭配Session怎么用

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Django中Cookie搭配Session怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI