1. 程式人生 > >Python3之cookie與session會話技術

Python3之cookie與session會話技術

會話技術的由來:

由於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']
    刪除某個名值對,這樣也能達到校驗效果;