token的原理及使用 登陸的驗證流程

2021-10-06 02:29:45 字數 1887 閱讀 2213

一、當使用者請求登入的時候,如果沒有問題,我們在服務端生成一條記錄,這個記錄裡可以說明一下登入的使用者是誰,然後把這條記錄的 id 號傳送給客戶端,客戶端收到以後把這個 id 號儲存在 cookie 裡,下次這個使用者再向服務端傳送請求的時候,可以帶著這個 cookie ,這樣服務端會驗證乙個這個 cookie 裡的資訊,看看能不能在服務端這裡找到對應的記錄,如果可以,說明使用者已經通過了身份驗證,就把使用者請求的資料返回給客戶端

二、基於token的身份驗證方法

​ 1、使用者向伺服器傳送使用者名稱和密碼。

2、服務端收到請求,去驗證使用者名稱與密碼

3、驗證成功後,服務端會簽發乙個 token,再把這個 token 傳送給客戶端。

4、客戶端收到 token 以後可以把它儲存起來,比如放在 cookie 裡或localstorage

5、使用者隨後的每一次請求,都會通過 cookie,將 token 傳回伺服器。

6、服務端收到請求,然後去驗證客戶端請求裡面帶著的 token,如果驗證成功,

​ 就向客戶端返回請求的資料

三、jsonwebtoken

1、jwt的原理

伺服器認證後,生成乙個json物件,傳送給使用者,就向下面這樣

以後,使用者與服務端通訊的時候,都要發回這個 json 物件。伺服器完全只靠這個物件認定使用者身份。為了防止使用者篡改資料,伺服器在生成這個物件的時候,會加上簽名

​ 2、jwt的組成部分

header:頭部

payload:負載

secret:簽名2-

1、header:

header是乙個json物件,主要由2部分組成,乙個是token的型別,乙個是使用的演算法2-

2、payload:

payload也是乙個json物件,用來存放實際需要傳遞的資料,官方規定了7個字段

iss (issuer):簽發人

exp (expiration time):過期時間

sub (subject):主題

aud (audience):受眾

nbf (not before):生效時間

iat (issued at):簽發時間

jti (jwt id):編號

除了官方定義的7個字段外,你還可以定義其他私有字段

注意:jwt預設是不加密的,任何人都可以讀到,所以不要把私密資訊放入這個部分2-

3、secret:

secret是乙個簽名,防止資料篡改。這個簽名只有伺服器知道,不能洩露給使用者。然後使用header中的簽名演算法生成簽名。(演算法預設是hmac sha256)

hmacsha256

(base64urlencode

(header)

+"."

+base64urlencode

(payload)

, secret)

四、jwt的基本使用(基於express)

const jwt =

require

("jsonwebtoken");

const secret =

"secret"

;//簽名

const getcookie =

(key)

=>}}

//驗證token

const verifytokenmiddle =

(req,res,next)

=>)}

next()

});}

//建立token

const createtoken =

(username)

=>

return jwt.

sign

(payload, secret,);

}module.exports =

token的原理及使用

一 登陸的驗證流程 當使用者請求登陸的時候,如果沒有問題,我們在服務端生成一條記錄,這個記錄可以說明一下登陸的使用者是誰,然後把這條記錄的id號傳送給客戶端,客戶端收到以後把這個id號儲存在cookie裡,下次這個使用者再次向服務端發 送請求的時候,可以帶著這個cookie,這樣服務端會驗證乙個這個...

Token的原理及使用

首先,當使用者請求登入的時候如果沒有問題,我們會在服務端生成一條記錄,在這個記錄裡面有登陸的使用者是誰,然後服務端會把id號傳送給客戶端,客戶端收到這個id後會把他儲存在cookie裡面,下次使用者再向伺服器傳送請求的 時候可以帶著這個cookie,這樣服務端會驗證一下cookie裡面的資訊,看能否...

LINUx 初步登陸及使用

輸入法調整 是切換語言的方式 虛擬機器管理 常規操作 kiosk foundation0 desktop rht vmctl start desktop 開啟虛擬機器 kiosk foundation0 desktop rht vmctl view desktop 顯示虛擬機器 kiosk foun...