正文

sub-蘇炳添979秒再創(chuàng)紀(jì)錄

xinfeng335
文章最后更新時間2025年02月05日,若文章內(nèi)容或圖片失效,請留言反饋!

▲ 《 Python+Java雙語視頻》 ▲

sub-蘇炳添979秒再創(chuàng)紀(jì)錄
(圖片來源網(wǎng)絡(luò),侵刪)

對于登錄功能大家應(yīng)該都不陌生sub,無論我們?nèi)ス潆娚唐脚_還是去看一些文章論壇,都會有一些訪問權(quán)限,這個時候就需要登錄,這樣才能享受更多沖浪的樂趣,對吧。但是由于http的無狀態(tài)性,無狀態(tài)性就是客戶端每次發(fā)出請求時,下一次請求無法得知上一次請求所包換的狀態(tài)數(shù)據(jù),換句話說就算是sub你登錄了,下一次請求也無法得知上一次用戶成功登錄過,那么這個該如何解決呢sub?

這個就是我要給大家分享的主題,如何記住用戶的登錄狀態(tài),即登錄的鑒權(quán)方法。那么接下來我們就談一下幾種常見的登錄鑒權(quán)方法吧。

01

cookie和session

1、cookie是什么?

Cookie實際上是 一小段的文本信息??蛻舳苏埱蠓?wù)器,如果服務(wù)器需要記錄該用戶狀態(tài),就使用response向客戶端瀏覽器頒發(fā)一個Cookie??蛻舳藭袰ookie保存起來。

當(dāng)瀏覽器再請求該網(wǎng)站時,瀏覽器把請求的網(wǎng)址連同該Cookie一同提交給服務(wù)器。服務(wù)器檢查該Cookie,以此來辨認(rèn)用戶狀態(tài)。服務(wù)器還可以根據(jù)需要修改Cookie的內(nèi)容。

信息保存的時間可以根據(jù)需要設(shè)置

2、session是什么?

Session是另一種 記錄客戶狀態(tài)的機(jī)制,不同的是Cookie保存在客戶端瀏覽器中,而 Session保存在服務(wù)器上??蛻舳藶g覽器訪問服務(wù)器的時候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上,這就是Session??蛻舳藶g覽器再次訪問時只需要從該Session中查找該客戶的狀態(tài)就可以了。

3、總結(jié)

服務(wù)端存儲 session ,客戶端存儲 cookie,其中 cookie 保存的為 sessionID

4、適用場景

適合傳統(tǒng)系統(tǒng)獨立鑒權(quán)

02

JWT

1、JWT是什么?

JSON Web Token(JWT)是一個非常輕巧的規(guī)范。這個規(guī)范允許我們 使用JWT在兩個組織之間傳遞安全可靠的信息。

JWT是一個有著簡單的統(tǒng)一表達(dá)形式的字符串, 由三部分組成,分別是header(頭部),payload(載荷),signature(簽證) 這三部分以小數(shù)點連接起來。

頭部(Header)

頭部用于描述關(guān)于該JWT的最基本的信息,例如其類型以及簽名所用的算法等。JSON內(nèi)容要經(jīng)Base64編碼生成字符串成為Header。

載荷(PayLoad)

payload的五個字段都是由JWT的標(biāo)準(zhǔn)所定義的。

iss : 該JWT的簽發(fā)者

sub : 該JWT所面向的用戶

aud : 接收該JWT的一方

exp(expires) : 什么時候過期,這里是一個Unix時間戳

iat(issued at) : 在什么時候簽發(fā)的

后面的信息可以按需補(bǔ)充。JSON內(nèi)容要經(jīng) Base64 編碼生成字符串成為PayLoad。

簽名(signature)

這個部分 header 與 payload通過header中聲明的加密方式,使用密鑰secret進(jìn)行加密,生成簽名。JWS的主要目的是 保證了數(shù)據(jù)在傳輸過程中不被修改,驗證數(shù)據(jù)的完整性。但由于僅采用 Base64對消息內(nèi)容編碼,因此不保證數(shù)據(jù)的不可泄露性。所以不適合用于傳輸敏感數(shù)據(jù)。

2、總結(jié)

服務(wù)器不再需要存儲 session,服務(wù)器認(rèn)證鑒權(quán)業(yè)務(wù)可以方便擴(kuò)展

JWT 并不依賴 cookie,也可以使用 header 傳遞

為減少盜用,要使用 https 協(xié)議傳輸

3、適用場景:

適合做簡單的 RESTful API 認(rèn)證

適合一次性驗證,例如注冊激活鏈接

03

HTTP Auth Authentication

HTTP 提供一個用于權(quán)限控制和認(rèn)證的通用框架。最常用的HTTP認(rèn)證方案是 HTTP Basic Authentication。

在HTTP協(xié)議進(jìn)行通信的過程中,HTTP協(xié)議定義了基本認(rèn)證過程以允許HTTP服務(wù)器對Web瀏覽器進(jìn)行用戶身份認(rèn)證的方法,當(dāng)一個客戶端向HTTP服務(wù)器進(jìn)行數(shù)據(jù)請求時,如果客戶端未被認(rèn)證,則HTTP服務(wù)器將通過基本認(rèn)證過程對客戶端的用戶名及密碼進(jìn)行驗證,以決定用戶是否合法。客戶端在接收到HTTP服務(wù)器的身份認(rèn)證要求后,會提示用戶輸入用戶名及密碼, 用戶輸入后,客戶端將用戶名和密碼中間用“:”分隔合并,并將合并后的字符串用BASE64編碼,在每次請求數(shù)據(jù)時,將密文附加于請求頭 (Request Header)Authorization: Basic XXXXXXX中。

HTTP服務(wù)器在每次收到請求包后,根據(jù)協(xié)議取得客戶端附加的用戶信息(BASE64編碼的用戶名和密碼),解開請求包,對用戶名及密碼進(jìn)行驗證,如果用戶名及密碼正確,則根據(jù)客戶端請求,返回客戶端所需要的數(shù)據(jù);否則,返回錯誤代碼或重新要求客戶端提供用戶名及密碼。

總結(jié)

通用 HTTP 身份驗證框架有多個驗證方案使用。 不同的驗證方案會在安全強(qiáng)度上有所不同。 HTTP Auth Authentication 是最常用的 HTTP認(rèn)證方案,為了減少泄露風(fēng)險一般要求 https 協(xié)議。

適用場景

一般多被 用在內(nèi)部安全性要求不高的的系統(tǒng)上,例如加了提取碼的網(wǎng)盤資源

問題

請求上攜帶驗證信息,容易被嗅探到

無法注銷

適合一次性驗證,例如注冊激活鏈接

學(xué)習(xí)安排上sub

碼個資料送給你

▲ 《 Python+Java雙語視頻》 ▲

掃描下方二維碼免費領(lǐng)取

“在看”點一點

?? ?? ??

-- 展開閱讀全文 --