Django框架會(huì)話技術(shù)實(shí)例分析【Cookie與Session】
本文實(shí)例講述了Django框架會(huì)話技術(shù)。分享給大家供大家參考,具體如下:
會(huì)話技術(shù)
1、Cookie
- 客戶端會(huì)話技術(shù)(數(shù)據(jù)存儲(chǔ)在客戶端)
- 以key-value的形式進(jìn)行存儲(chǔ)
- cookie的操作都是通過Response來實(shí)現(xiàn)的
- 典型場(chǎng)景
- 購(gòu)物車
- 登錄信息
- 支持過期時(shí)間
- Cookie清除策略
- 默認(rèn)關(guān)閉瀏覽器時(shí)cookie自動(dòng)清除
- 配置Cookie過期時(shí)間
- max-age=0 關(guān)閉就失效
- max-age=None 永久有效
- max-age = int 單位秒
- expires 過期時(shí)間,和max-age功能基本一致
- 用戶登出,就是清除了cookie(令牌)
2、Session
- 服務(wù)端會(huì)話技術(shù)
- Session依賴于Cookie
- 將Session在數(shù)據(jù)庫(kù)中的session_key,當(dāng)作sessionid,存儲(chǔ)在cookie中
- Session數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,并且做了基本的數(shù)據(jù)安全處理(base64編碼)
3、Token
- 服務(wù)端會(huì)話技術(shù)
- 相當(dāng)于手動(dòng)實(shí)現(xiàn)的session
- 值應(yīng)該是唯一的
- 要通過特定算法保證唯一
- 時(shí)間
- ip
- 域名
- 網(wǎng)卡 mac
- 隨機(jī)數(shù)
4、解決痛點(diǎn)
- 解決短連接無法保存用戶狀態(tài)的問題
- 延長(zhǎng)了請(qǐng)求的生命周期
- 用戶管理實(shí)例
- 用戶注冊(cè)
- 將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)
- 數(shù)據(jù)安全
- 密碼對(duì)誰都是不透明的
- 用戶登陸
- 將登陸提交過來的信息和數(shù)據(jù)庫(kù)內(nèi)的信息進(jìn)行校驗(yàn)
- 返回不成功結(jié)果要刻意模糊概念
- 用戶信息
- 根據(jù)用戶的唯一標(biāo)識(shí),去獲取用戶
- 用戶退出
- 清除令牌
- 清理cookie,session,或 token
5、數(shù)據(jù)安全
- 策略
- 服務(wù)器的數(shù)據(jù)對(duì)任何人來說都應(yīng)該是不可見的(不透明)
- 可以使用常見的摘要算法對(duì)數(shù)據(jù)進(jìn)行摘要(md5,sha)
- 在所有數(shù)據(jù)驗(yàn)證的地方都加上安全保護(hù)措施
6、摘要算法
- hashlib
- sha
- md5
- 用來驗(yàn)證數(shù)據(jù)完整性(不被篡改)
- 哪怕【消息原文】被改動(dòng)一丁點(diǎn),【篡改版消息生成的消息摘要】都會(huì)與【原始消息所生成的消息摘要】的大相徑庭
- 統(tǒng)一輸出
- 輸出默認(rèn)都是128位二進(jìn)制數(shù)
- 32位16進(jìn)制數(shù)
- 單向不可逆
7、UUID
- 唯一標(biāo)識(shí)
- 納秒級(jí)的時(shí)間
- 1ns 創(chuàng)建 1m個(gè)id
- mac 地址
- 機(jī)器編碼
- 隨機(jī)數(shù)
- uuid
uuid1()
uuid3()
uuid4()
uuid5()
8、常用API
- 生成消息摘要
def generate_password(password): #定義算法 sha = hashlib.sha512() #更新算法內(nèi)容區(qū)(密碼字節(jié)) sha.update(password.encode("utf-8")) #使用算法生成摘要 return sha.hexdigest()
- cookie
response.set_cookie("uname", username) response.set_cookie("uname", username, max_age=30) response.set_cookie("uname", username, expires=timedelta(minutes=1)) uname = request.COOKIES.get('uname',None) response.delete_cookie("uname")
- 助記
- 操作客戶端唯有通過Response對(duì)象
- 方法無非get,set,delete
- session
- uname = request.session.get('uname') - request.session['uname'] = username - request.session.flush() - 同時(shí)清除cookie 和 session - del request.session['uname']
- 助記
- session是存在于服務(wù)端本地的,而Request的COOKIE當(dāng)中存有sessionid,因此通過Request對(duì)象去關(guān)聯(lián)用戶的session
- 方法無非get,set,del,flush
- token
response.set_cookie("utoken", token) utoken = request.COOKIES.get("utoken")
希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
caffe binaryproto 與 npy相互轉(zhuǎn)換的實(shí)例講解
今天小編就為大家分享一篇caffe binaryproto 與 npy相互轉(zhuǎn)換的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07pytorch如何對(duì)image和label同時(shí)進(jìn)行隨機(jī)翻轉(zhuǎn)
這篇文章主要介紹了pytorch如何對(duì)image和label同時(shí)進(jìn)行隨機(jī)翻轉(zhuǎn)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Python3.9 beta2版本發(fā)布了,看看這7個(gè)新的PEP都是什么
這篇文章主要介紹了Python3.9 beta2版本發(fā)布了,看看這7個(gè)新的PEP都是什么,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-06-06怎么用Python識(shí)別手勢(shì)數(shù)字
今天給大家?guī)淼奈恼率窃趺从肞ython識(shí)別手勢(shì)數(shù)字,文中有非常詳細(xì)的圖文示例,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06Pytest單元測(cè)試框架生成HTML測(cè)試報(bào)告及優(yōu)化的步驟
本文主要介紹了Pytest單元測(cè)試框架生成HTML測(cè)試報(bào)告及優(yōu)化的步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01pandas中DataFrame排序及分組排序的實(shí)現(xiàn)示例
本文主要介紹了pandas中DataFrame排序及分組排序,pandas中的sort_values()函數(shù)原理類似于SQL中的order by,可以將數(shù)據(jù)集依照某個(gè)字段中的數(shù)據(jù)進(jìn)行排序,下面就來具體介紹一下,感興趣的可以了解一下2024-04-04Python列表(List)知識(shí)點(diǎn)總結(jié)
在本篇文章中小編給大家分享了關(guān)于Python列表(List)知識(shí)點(diǎn)一直對(duì)應(yīng)的實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-02-02使用python 3實(shí)現(xiàn)發(fā)送郵件功能
本文通過實(shí)例代碼給大家介紹了使用python 3實(shí)現(xiàn)發(fā)送郵件功能,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06