Django之Session與JWT比較

2022-08-21 06:57:11 字數 1630 閱讀 1553

session與jwt比較

目錄2.jwt介紹

1.1session使用原理

1.2session使用的缺點

1.3常用解決session方法

第二種:寫入資料庫或檔案持久層

2.1jwt原則

jwt的原則是在伺服器身份驗證之後,將生成乙個json物件並將其傳送回使用者

之後,當使用者與伺服器通訊時,客戶端在請求中發回json物件,伺服器僅依賴於這個json物件來標識使用者。

為了防止使用者篡改資料,伺服器將在生成物件時新增簽名(有關詳情資訊,請參閱下文)。

伺服器不儲存任何會話資料,即伺服器變為無狀態,使其更容易擴充套件。

2.2jwt的資料結構

第一部分:jwt頭

# jwt頭部分是乙個描述jwt元資料的json物件,通常如下所示。

# 1) alg屬性表示簽名使用的演算法,預設為hmac sha256 (寫為hs256),

# 2) typ屬性標識令牌的型別,jwt令牌統一寫為jwt。

# 3) 最後,使用base64 url演算法將上述json物件轉換為字串儲存。

第二部分:有效載荷 沒有敏感資料的使用者資訊

#1、有效載荷部分,是jwt的主體內容部分,也是乙個json物件,包含需要傳遞的資料。jwt指定七個預設字段供選擇。

'''iss:發行人

exp:到期時間

sub:主體

aud:使用者

nbf:在此之前不可用

iat:發布時間

jti:jwt id用於標識該jwt

'''#2、除以上預設欄位外,我們還可以自定義私有字段,如下例:

#3、注意

預設情況下jwt是未加密的,任何人都可以解讀其內容,因此不要構建隱私資訊字段,存放保密資訊,以防

止資訊洩露。

json物件也使用base64 url演算法轉換為字串儲存。

第三部分:簽名雜湊

#1.簽名雜湊部分是對上面兩部分資料簽名,通過指定的演算法生成雜湊,以確保資料不會被篡改。

#2.首先,需要指定乙個明明(secret),改密碼僅僅為儲存在伺服器中,並且不能向使用者公開。

#4.hmacsha256(base64urlencode(header) + "." base64urlencode(paload),secret)

#5.在計算出簽名雜湊後,jwt頭,有效載荷和簽名雜湊的三個部分組成乙個字串,每個部分使用者"."分隔,就構成整個jwt物件。

2.3jwt核心

2.4jwt特點分析

Django會話之session(手動設定)

在之前的帖子中,介紹了在django中如何手動設定cookie,由於cookis儲存在客戶端,對於帳戶安全要求嚴格的應用來說,儲存在客戶端顯然不是上策,故而需要session,由於session是儲存在服務端,安全較session高,本貼接上繼續session設定。關鍵 如下 in my views...

flask之cookie與session區別

使用者身份校驗是web訪問時的重要步驟。常用的身份校驗方式有cookie,session和jwt三種。其中cookie和session是較傳統的校驗方式,其採用將使用者資訊儲存在伺服器或瀏覽器中,使用者訪問時,攜帶相關資訊,有伺服器進行校驗。最近流行的jwt令牌是一種分布式的跨域驗證機製造。其允許跨...

Django中session和cookie的用法

session 存在伺服器端,用request物件進行設定 設定session 在後端寫入 request.session money 100 缺省會在cookie中產生乙個sessionid 獲取session值 只能在後端獲取 print request.session.get money co...