您好,登錄后才能下訂單哦!
這篇文章主要介紹了Django框架會話技術的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
具體如下:
會話技術
1、Cookie
客戶端會話技術(數據存儲在客戶端)
以key-value的形式進行存儲
cookie的操作都是通過Response來實現的
典型場景
購物車
登錄信息
支持過期時間
Cookie清除策略
默認關閉瀏覽器時cookie自動清除
配置Cookie過期時間
max-age=0 關閉就失效
max-age=None 永久有效
max-age = int 單位秒
expires 過期時間,和max-age功能基本一致
用戶登出,就是清除了cookie(令牌)
2、Session
服務端會話技術
Session依賴于Cookie
將Session在數據庫中的session_key,當作sessionid,存儲在cookie中
Session數據存儲在數據庫中,并且做了基本的數據安全處理(base64編碼)
3、Token
服務端會話技術
相當于手動實現的session
值應該是唯一的
要通過特定算法保證唯一
時間
ip
域名
網卡 mac
隨機數
4、解決痛點
解決短連接無法保存用戶狀態的問題
延長了請求的生命周期
用戶管理實例
密碼對誰都是不透明的
用戶注冊
將數據存儲到數據庫
數據安全
用戶登陸
將登陸提交過來的信息和數據庫內的信息進行校驗
返回不成功結果要刻意模糊概念
用戶信息
根據用戶的唯一標識,去獲取用戶
用戶退出
清除令牌
清理cookie,session,或 token
5、數據安全
策略
服務器的數據對任何人來說都應該是不可見的(不透明)
可以使用常見的摘要算法對數據進行摘要(md5,sha)
在所有數據驗證的地方都加上安全保護措施
6、摘要算法
hashlib
輸出默認都是128位二進制數
32位16進制數
哪怕【消息原文】被改動一丁點,【篡改版消息生成的消息摘要】都會與【原始消息所生成的消息摘要】的大相徑庭
sha
md5
用來驗證數據完整性(不被篡改)
統一輸出
單向不可逆
7、UUID
唯一標識
納秒級的時間
1ns 創建 1m個id
mac 地址
機器編碼
隨機數
uuid
uuid1()
uuid3()
uuid4()
uuid5()
8、常用API
生成消息摘要
def generate_password(password): #定義算法 sha = hashlib.sha512() #更新算法內容區(密碼字節) 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對象
方法無非get,set,delete
session
- uname = request.session.get('uname') - request.session['uname'] = username - request.session.flush() - 同時清除cookie 和 session - del request.session['uname']
助記
session是存在于服務端本地的,而Request的COOKIE當中存有sessionid,因此通過Request對象去關聯用戶的session
方法無非get,set,del,flush
token
response.set_cookie("utoken", token) utoken = request.COOKIES.get("utoken")
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Django框架會話技術的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。