您好,登錄后才能下訂單哦!
這篇文章主要介紹了Django框架會(huì)話技術(shù)的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
具體如下:
會(huì)話技術(shù)
1、Cookie
客戶端會(huì)話技術(shù)(數(shù)據(jù)存儲(chǔ)在客戶端)
以key-value的形式進(jìn)行存儲(chǔ)
cookie的操作都是通過(guò)Response來(lái)實(shí)現(xiàn)的
典型場(chǎng)景
購(gòu)物車
登錄信息
支持過(guò)期時(shí)間
Cookie清除策略
默認(rèn)關(guān)閉瀏覽器時(shí)cookie自動(dòng)清除
配置Cookie過(guò)期時(shí)間
max-age=0 關(guān)閉就失效
max-age=None 永久有效
max-age = int 單位秒
expires 過(guò)期時(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)該是唯一的
要通過(guò)特定算法保證唯一
時(shí)間
ip
域名
網(wǎng)卡 mac
隨機(jī)數(shù)
4、解決痛點(diǎn)
解決短連接無(wú)法保存用戶狀態(tài)的問(wèn)題
延長(zhǎng)了請(qǐng)求的生命周期
用戶管理實(shí)例
密碼對(duì)誰(shuí)都是不透明的
用戶注冊(cè)
將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)
數(shù)據(jù)安全
用戶登陸
將登陸提交過(guò)來(lái)的信息和數(shù)據(jù)庫(kù)內(nèi)的信息進(jìn)行校驗(yàn)
返回不成功結(jié)果要刻意模糊概念
用戶信息
根據(jù)用戶的唯一標(biāo)識(shí),去獲取用戶
用戶退出
清除令牌
清理cookie,session,或 token
5、數(shù)據(jù)安全
策略
服務(wù)器的數(shù)據(jù)對(duì)任何人來(lái)說(shuō)都應(yīng)該是不可見的(不透明)
可以使用常見的摘要算法對(duì)數(shù)據(jù)進(jìn)行摘要(md5,sha)
在所有數(shù)據(jù)驗(yàn)證的地方都加上安全保護(hù)措施
6、摘要算法
hashlib
輸出默認(rèn)都是128位二進(jìn)制數(shù)
32位16進(jìn)制數(shù)
哪怕【消息原文】被改動(dòng)一丁點(diǎn),【篡改版消息生成的消息摘要】都會(huì)與【原始消息所生成的消息摘要】的大相徑庭
sha
md5
用來(lái)驗(yàn)證數(shù)據(jù)完整性(不被篡改)
統(tǒng)一輸出
單向不可逆
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")
助記
操作客戶端唯有通過(guò)Response對(duì)象
方法無(wú)非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,因此通過(guò)Request對(duì)象去關(guān)聯(lián)用戶的session
方法無(wú)非get,set,del,flush
token
response.set_cookie("utoken", token) utoken = request.COOKIES.get("utoken")
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Django框架會(huì)話技術(shù)的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。