【python socket編程】—— 5.實現cookie和session

前文:【python socket編程】—— 4.實現redirect函數html


cookie的實現很簡單,在服務器返回的響應中,header裏增長Set-Cookie,瀏覽器接受到Set-Cookie中的value,下次訪問這個網站的請求中就會帶上這個cookie。編寫一個增長cookie的函數:python

def add_cookie(cookie=''):
    header = 'HTTP/1.1 200 OK \r\nContent-Type: text/html\r\n'
    header += 'Set-Cookie: {}\r\n'.format(cookie)
    return header

假設用戶登陸驗證成功以後,咱們用add_cookie將其用戶名username存入到cookie中返回給瀏覽器,例如承接前文,用戶登陸成功後給其返回一個302跳轉的響應,咱們在其中再加入cookie,此時response以下:編程

HTTP/1.1 302 JUMP 
Content-Type: text/html
Set-Cookie: Harp
Location: /

那麼瀏覽器下次請求,requestheader裏就會帶上Cookie: Harp這一行了。此時服務端解析request,根據cookie就知道當前用戶是登錄狀態的。segmentfault


顯然,直接在cookie裏寫用戶的username是不安全的。咱們能夠把username存在session裏,假設session是一個字典,用戶登陸驗證成功後,隨機生成一個長的字符串session_id做爲keyusername做爲value存入session中,而後把session_id做爲cookie返回給瀏覽器,瀏覽器下次請求時候帶上的cookie內容爲這個session_id,咱們去session裏取對應的value便可。瀏覽器


下一篇文章:【python socket編程】—— 6.簡單實現render_template和密碼hash安全

相關文章
相關標籤/搜索