Django框架會話技術(shù)實例分析【Cookie與Session】
更新時間:2019年05月24日 11:15:37 作者:微信1257309054
這篇文章主要介紹了Django框架會話技術(shù),結(jié)合實例形式分析了Django框架Cookie與Session相關(guān)使用技巧與注意事項,需要的朋友可以參考下
本文實例講述了Django框架會話技術(shù)。分享給大家供大家參考,具體如下:
會話技術(shù)
1、Cookie
- 客戶端會話技術(shù)(數(shù)據(jù)存儲在客戶端)
- 以key-value的形式進行存儲
- cookie的操作都是通過Response來實現(xiàn)的
- 典型場景
- 購物車
- 登錄信息
- 支持過期時間
- Cookie清除策略
- 默認關(guān)閉瀏覽器時cookie自動清除
- 配置Cookie過期時間
- max-age=0 關(guān)閉就失效
- max-age=None 永久有效
- max-age = int 單位秒
- expires 過期時間,和max-age功能基本一致
- 用戶登出,就是清除了cookie(令牌)
2、Session
- 服務(wù)端會話技術(shù)
- Session依賴于Cookie
- 將Session在數(shù)據(jù)庫中的session_key,當作sessionid,存儲在cookie中
- Session數(shù)據(jù)存儲在數(shù)據(jù)庫中,并且做了基本的數(shù)據(jù)安全處理(base64編碼)
3、Token
- 服務(wù)端會話技術(shù)
- 相當于手動實現(xiàn)的session
- 值應(yīng)該是唯一的
- 要通過特定算法保證唯一
- 時間
- ip
- 域名
- 網(wǎng)卡 mac
- 隨機數(shù)
4、解決痛點
- 解決短連接無法保存用戶狀態(tài)的問題
- 延長了請求的生命周期
- 用戶管理實例
- 用戶注冊
- 將數(shù)據(jù)存儲到數(shù)據(jù)庫
- 數(shù)據(jù)安全
- 密碼對誰都是不透明的
- 用戶登陸
- 將登陸提交過來的信息和數(shù)據(jù)庫內(nèi)的信息進行校驗
- 返回不成功結(jié)果要刻意模糊概念
- 用戶信息
- 根據(jù)用戶的唯一標識,去獲取用戶
- 用戶退出
- 清除令牌
- 清理cookie,session,或 token
5、數(shù)據(jù)安全
- 策略
- 服務(wù)器的數(shù)據(jù)對任何人來說都應(yīng)該是不可見的(不透明)
- 可以使用常見的摘要算法對數(shù)據(jù)進行摘要(md5,sha)
- 在所有數(shù)據(jù)驗證的地方都加上安全保護措施
6、摘要算法
- hashlib
- sha
- md5
- 用來驗證數(shù)據(jù)完整性(不被篡改)
- 哪怕【消息原文】被改動一丁點,【篡改版消息生成的消息摘要】都會與【原始消息所生成的消息摘要】的大相徑庭
- 統(tǒng)一輸出
- 輸出默認都是128位二進制數(shù)
- 32位16進制數(shù)
- 單向不可逆
7、UUID
- 唯一標識
- 納秒級的時間
- 1ns 創(chuàng)建 1m個id
- mac 地址
- 機器編碼
- 隨機數(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對象
- 方法無非get,set,delete
- session
- uname = request.session.get('uname')
- request.session['uname'] = username
- request.session.flush()
- 同時清除cookie 和 session
- del request.session['uname']
- 助記
- session是存在于服務(wù)端本地的,而Request的COOKIE當中存有sessionid,因此通過Request對象去關(guān)聯(lián)用戶的session
- 方法無非get,set,del,flush
- token
response.set_cookie("utoken", token)
utoken = request.COOKIES.get("utoken")
希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。
相關(guān)文章
linux下安裝python3和對應(yīng)的pip環(huán)境教程詳解
這篇文章主要介紹了linux下安裝python3和對應(yīng)的pip環(huán)境,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
python實現(xiàn)自動登錄人人網(wǎng)并訪問最近來訪者實例
這篇文章主要介紹了python實現(xiàn)自動登錄人人網(wǎng)并訪問最近來訪者實例,該實例是在前面登錄人人網(wǎng)實例基礎(chǔ)上的擴展,是非常實用的一個技巧,需要的朋友可以參考下2014-09-09
Python 3.6打包成EXE可執(zhí)行程序的實現(xiàn)
這篇文章主要介紹了Python 3.6打包成EXE可執(zhí)行程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
利用django+wechat-python-sdk 創(chuàng)建微信服務(wù)器接入的方法
今天小編就為大家分享一篇利用django+wechat-python-sdk 創(chuàng)建微信服務(wù)器接入的方法,具有很好的參考價值,希望對大家有所幫助。一起跟小編過來看看吧2019-02-02

