Python3之cookie與session會話技術
阿新 • • 發佈:2019-02-14
會話技術的由來:
由於http是無狀態的,很多網站需要識別登入進來的使用者身份,以備下次直接登入或者區分是哪個使用者登入的,這樣可以根據不同的使用者展示不同的資訊,這樣就需要一種技術來儲存使用者的狀態,這樣會話技術應運而生!
會話技術分為兩種:
瀏覽器端會話技術:cookie
當用戶第一次登入成功後,伺服器會通過Httpresponse/redirect/render獲取的物件通過呼叫set_cookie,設定cookie,返回給瀏覽器,並且儲存在瀏覽器端,當下次訪問時瀏覽器會自動攜帶cookie完成對伺服器的訪問;
服務端會話技術:session
對伺服器進行訪問時伺服器需要獲取id,這個id就是sessionId,當然id名字可以自動設定,如果有則在相應的資料庫進行查詢相應的使用者資訊,如果沒有該id,則伺服器會建立相應的session,並返回給瀏覽器,儲存在瀏覽器端,下次訪問時就會根據這個session的內容去查詢相應的資訊;
流程分析:
######使用者校驗成功####### request.session['isLogin'] = True request.session['userName'] = user_name return redirect(...) 當設定session時,django會做兩件事情: 1.首先產生一個隨機字串; 2.將session所設定的鍵對應的值新增到session字典中,並和之前產生的隨機字串組成一個新的字典,形如{‘隨機字串’:{'isLogin':True,'userName':'sheldon'}},並預設儲存到資料庫中,然後在return時將{sessionId:'隨機字串'}和頁面內容一起返回到瀏覽器; 當獲取session的值時: 當用戶再次訪問伺服器時,伺服器會檢查有沒有攜帶過來的sessionId,根據對應的隨機字串去資料庫查詢對應的使用者資訊;
清除session:
request.session.flush()
會將資料庫中的一條表記錄刪除;
del request.session['isLogin']
刪除某個名值對,這樣也能達到校驗效果;