一、當使用者請求登入的時候,如果沒有問題,我們在服務端生成一條記錄,這個記錄裡可以說明一下登入的使用者是誰,然後把這條記錄的 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...