11.22 知識總結(cookie、 session相關知識點)

一、 Cookie和Session的發展史

  • 一開始:只有一個頁面,沒有登錄功能,大家看到東西都一樣

    • 新聞

  • 時代發展,出現了需要登錄注冊的網站,要有一門技術存儲我們的登錄信息

    • 京東、天貓

    • cookie

      • 存儲形式:k:v鍵值對

      • 存儲位置:客戶端

      • 不安全,信息可能會泄露

  • 時代發展,需要有一門新的安全的技術

    • session

    • 標識符,來表示我是當前用戶加密出來的數據

    • 對敏感信息進行加密處理

      • 存儲服務端:

      • 標識符配合上你的加密串

    • 把我的標識符+ 字符串全給客戶端

      • 客戶端存儲格式

        • session_id:返回回來的表示符+加密串

  • token

    • 三段式加密

?二、Cookie

2.1?設置cookie

HttpResponse
render
redriect

obj = HttpResponse("ok")
obj.set_cookie('k','v')

def login(request, *args, **kwargs):if request.method == 'POST':username = request.POST.get("username")password = request.POST.get("password")if username == "dream" and password == "521":obj = HttpResponse("ok")obj.set_cookie('sign', 'user')return objelse:return redirect('/login/')return render(request, 'login.html')

2.2 取值

cookie取值驗證:

def home(request, *args, **kwargs):sign = request.COOKIES.get('sign')if sign and sign == 'user':return HttpResponse("這是home頁面")else:return redirect('/login/')

?完整版 cookie登錄注冊:

def login(request, *args, **kwargs):# next_url = request.get_full_path()# print(next_url) # /login/?next_url=/home/if request.method == 'POST':username = request.POST.get("username")password = request.POST.get("password")if username == "dream" and password == "521":next_url = request.GET.get('next_url')# print(next_url) # /home/obj = redirect(next_url)obj.set_cookie('sign', 'user')return objelse:return redirect('/login/')return render(request, 'login.html')def login_auth(func):def inner(request, *args, **kwargs):# print(request.path_info) #  /home/# print(request.get_full_path()) # /home/?username=111next_url = request.get_full_path()  # /home/# print(next_url)# /home/sign = request.COOKIES.get('sign')if sign and sign == 'user':res = func(request, *args, **kwargs)return reselse:return redirect(f'/login/?next_url={next_url}')return inner@login_auth
def home(request, *args, **kwargs):return HttpResponse("這是home頁面")# def home(request, *args, **kwargs):
#     sign = request.COOKIES.get('sign')
#     if sign and sign == 'user':
#         return HttpResponse("這是home頁面")
#     else:
#         return redirect('/login/')@login_auth
def index(request, *args, **kwargs):return HttpResponse("這是index頁面")

2.3??設置過期時間

obj.set_cookie('sign', 'user', expires=3)
obj.set_cookie('sign', 'user', max_age=3)

2.4??刪除cookie

def logout(request, *args, **kwargs):obj = redirect('/home/')# 設置超時時間 5s 到期obj.delete_cookie('sign')return obj

三、??Session

3.1?設置session

request.session['sign'] = 'user'

3.2??取值session

sign = request.session.get('sign')

def login(request, *args, **kwargs):# next_url = request.get_full_path()# print(next_url) # /login/?next_url=/home/if request.method == 'POST':username = request.POST.get("username")password = request.POST.get("password")if username == "dream" and password == "521":# next_url = request.GET.get('next_url')# print(next_url) # /home/request.session['sign'] = 'user'obj = redirect('/home/')# 設置過期時間# obj.set_cookie('sign', 'user', expires=3)# obj.set_cookie('sign', 'user', max_age=3)return objelse:return redirect('/login/')return render(request, 'login.html')def login_auth(func):def inner(request, *args, **kwargs):# print(request.path_info) #  /home/# print(request.get_full_path()) # /home/?username=111next_url = request.get_full_path()  # /home/# print(next_url)# /home/sign = request.session.get('sign')# print(sign) # userif sign and sign == 'user':res = func(request, *args, **kwargs)return reselse:return redirect(f'/login/?next_url={next_url}')return inner@login_auth
def home(request, *args, **kwargs):return HttpResponse("這是home頁面")

注:?

  • session基于數據庫表才能使用的

    • 必須先遷移數據庫,生成 django_session 表

  • session只對當次登錄有效

    • 主動清除瀏覽器中本地存在的session

    • 驗簽發現,沒有sessionid就會自動生成新的session

  • django_sessoin表中的數據條數取決于瀏覽器

  • 同一個計算機(IP地址)上同一個瀏覽器只會有一條數據生效

  • 同一個計算機(IP地址)上多個瀏覽器會有多個數據生效

  • 當session過期的時候,可能會出現多條數據對應一個瀏覽器

    • 但是這些數據不會持久化存儲,會被定時清理掉,可以手動清除也可以代碼清除

  • 目的是為了節省服務器數據庫資源

3.3??session設置過期時間

request.session['sign'] = 'user'# 如果是數字的話就是指定 s shu# request.session.set_expiry(3)# 0 就是關閉瀏覽器后自動清除瀏覽器的sessionidrequest.session.set_expiry(0)

3.4??刪除session

 # 刪除session方式一# request.session.delete()# 把瀏覽器和數據庫里面的session全部清除掉request.session.flush()

四、??CBV加裝飾器的三種方法

?4.1?方式一:加載視圖函數上面

 @method_decorator(login_auth)def get(self, request, *args, **kwargs):return HttpResponse("這是home頁面")def post(self):...

4.2???方式二:放在類視圖上面 (放的裝飾器函數,name指定你的視圖函數里面的方法)

@method_decorator(login_auth, name='get')
@method_decorator(login_auth, name='post')
class UserView(View):

4.3???方式三 : dispactch 方法加裝飾器 : 本視圖函數內所有的視圖都需要走裝飾器

@method_decorator(login_auth)def dispatch(self, request, *args, **kwargs):# Try to dispatch to the right method; if a method doesn't exist,# defer to the error handler. Also defer to the error handler if the# request method isn't on the approved list.if request.method.lower() in self.http_method_names:handler = getattr(self, request.method.lower(), self.http_method_not_allowed)else:handler = self.http_method_not_allowedreturn handler(request, *args, **kwargs)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162174.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162174.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162174.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【愚公系列】保姆級教程帶你實現HarmonyOS手語猜一猜元服務

🚀前言 最近HarmonyOS NEXT大火,這個純血鴻蒙吸引力了大家的關注。雖然現在還沒面向個人開發者開放,但我們可以基于最新的API9及開發工具來嘗試開發鴻蒙新的應用形態——元服務。來體驗下未來在HarmonyOS NEXT上實現的應用開發。 HarmonyOS…

什么是高防IP?有什么優勢?怎么選擇高防IP?

在當今的互聯網環境中,分布式拒絕服務(DDoS)攻擊已經成為一種常見的安全威脅。這種攻擊通過向目標服務器發送大量的無效流量,使其無法處理正常的請求,從而達到迫使服務中斷的目的。作為一個用戶,你是否曾遇…

QGIS文章五——對遙感影像進行土地類型分類—監督分類(dzetsaka : classification tool)...

dzetsaka classification tool是QGIS的強大分類插件,目前主要提供了高斯混合模型分類器、Random Forest、KNN和SVM四種分類器模型,相比于SCP(Semi-Automatic Classification),他的一個特點就是功能專一,操作簡單。 從十一月開始一…

Linux基礎命令3

移動,剪切文件 普通文件的移動剪切 現在在這兒 上圖中,mv y.x ./tmp的意思,就是將當前路徑下的y.x文件進行剪切,然后放到路徑為當前路徑下的tmp目錄文件夾里面 操作完成后可以cd tmp,ls看到y.x文件已經在里面了 現在…

facebook引流軟件需要具備什么功能

facebook引流軟件需要具備什么功能 用戶信息批量修改:可批量修改已登錄用戶的頭像、密碼、個人說明等信息。小號批量刷贊、評論:可以批量用Facebook小號給帖子、主頁等刷贊或評論。直播帖刷人氣/評論/分享:可以直接刷直播帖子的人氣、評論&a…

京東內部員工,爆料工資與公積金收入!

精彩回顧:進了央企,拿了戶口,卻感覺被困住了。 每個企業都有它的一套規則,哪些人適合加薪,哪些人適合拿獎金,哪些人適合給股票期權等等。但是說實話,很多人都只能拿底薪,這些福利啥的…

數據挖掘 K近鄰

什么時候用K近鄰? 交叉驗證的時候。最常見的交叉驗證方法是K折交叉驗證,其中數據集被均勻分成K個子集,稱為折,然后執行K次訓練和測試,每次選擇不同的折作為測試集,其余的作為訓練集。最后,將K次…

JavaScript編程基礎 – 對象

JavaScript編程基礎 – 對象 JavaScript Programming Essentials – Object 本文簡要介紹JavaScript面向對象編程,如何實現其中的對象以及實例演示,希望對大家學習JavaScript有所幫助。 1. 面向對象編程特點 面向對象編程(Object-Oriented Programmi…

淺談JDK動態代理(上)

作者簡介:大家好,我是smart哥,前中興通訊、美團架構師,現某互聯網公司CTO 聯系qq:184480602,加我進群,大家一起學習,一起進步,一起對抗互聯網寒冬 到目前為止&#xff0c…

Splunk 編寫高效 查詢語句

1: 背景: splunk 的查詢語句的是否優化,對是否節省資源有很大的影響。下面說一下大概的方法: There are a set of basic principles that you can follow to optimize your searches. Retrieve only the required data Move as little data as possible Parallelize as mu…

力扣OJ題講解——循環隊列

今天我們一起來做一道關于隊列的OJ題目,這是力扣題目622題,點擊題目鏈接可以直接跳轉,https://leetcode.cn/problems/design-circular-queue/ 首先,我們看到要求,需要我們實現哪些功能? 我們需要設置隊列長…

2023亞太杯數學建模A題B題C題選題建議,思路分析,模型代碼

目錄 ABC題思路模型代碼:獲取見文末名片,第一時間更新 視頻連接講解如上 A題思路:采果機器人的圖像識別技術思路模型代碼 B題思路:玻璃溫室中的微氣候法規 C題思路:我國新能源電動汽車的發展趨勢 ABC題思路模型代…

經典雙指針算法試題(二)

📘北塵_:個人主頁 🌎個人專欄:《Linux操作系統》《經典算法試題 》《C》 《數據結構與算法》 ??走在路上,不忘來時的初心 文章目錄 一、有效三角形的個數1、題目講解2、講解算法原理3、代碼實現 二、查找總價格為目標值的兩個商…

Excel使用技巧匯總

1 單元格內換行 altenter

Hutool

一、簡介 Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅 官方文檔: https://www.hutool.cn/docs/#/ 二、包含組件 一個Java基礎工具類,對文…

allegro畫封裝時使用坐標指令無效

使用坐標指令時顯示:“Pick is outside the extent of the drawing…pick again” 這是因為你放的引腳已經超出你這個繪制界面的定義尺寸,需要到Setup->Design pararmeters…里面去將圖幅改大一點,如下圖所示: 然后點擊Design…

消息中間件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP協議!

前言 本章學習,我們可以了解到以下知識點: 互聯網大廠為什么選擇RabbitMQ?RabbiMQ的高性能之道是如何做到的?什么是AMQP高級協議?AMQP核心概念是什么?RabbitMQ整體架構模型是什么樣子的?Rabbi…

P8599 [藍橋杯 2013 省 B] 帶分數(dfs+全排列+斷點判斷)

思路&#xff1a;1.深度枚舉所有排列情況 2.設置為每個排列設置兩個斷點&#xff0c;分為三部分&#xff1a;a,b,c 3.轉換為乘法判斷條件&#xff0c;滿足加一 代碼如下&#xff1a;&#xff08;可用next_permutation全排列函數代替dfs&#xff09; #include<iostream>…

機器學習調參指南:提升模型性能的關鍵步驟

諸神緘默不語-個人CSDN博文目錄 文章目錄 1. 理解模型的參數和超參數2. 使用網格搜索進行超參數調優3. 隨機搜索4. 貝葉斯優化5. 使用交叉驗證避免過擬合6. 考慮正則化7. 調整學習率和其他優化器參數8. 實驗和記錄9. 模型的早停法10. 總結 在機器學習和深度學習的領域中&#x…

全面的日志監控管理工具

企業網絡由眾多日志源組成。集中監控這些日志源有助于防止數據威脅和網絡攻擊&#xff0c;綜合日志監控解決方案可以自動執行日志管理流程&#xff0c;通過關聯日志來識別惡意活動&#xff0c;并幫助滿足IT合規性要求。 不同類型的日志監控 EventLog Analyzer 綜合日志監控解…