新年好~css
最近一直比較忙~新年第一篇文章來簡單說下JWT
JWT(JSON Web Token)
是一個開放標準(RFC 7519),被設計爲緊湊且安全的,特別適用於分佈式站點的單點登陸(SSO)場景。算法
一、受權,一旦用戶登陸後,每一個後續的請求都會包含一個JWT
,能夠用來驗證用戶的身份,以及對路由,服務和資源的訪問。
二、信息交換:因爲使用了標頭和有效負載計算簽名,能夠確保發送者的數據是麼有被僞造過的。json
JWT
使用'.'
分隔的三部分就像這樣:xxxxx.yyyyy.zzzzz
結構就像這樣api
head
部分通常是JWT
的聲明類型和算法像這樣:安全
{
"alg": "HS256",
"typ": "JWT"
}
複製代碼
令牌的第二部分是有效負載,通常有三種類型:bash
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
複製代碼
其中sub
指的是接收JWT
的一方,而後還會包含一些其餘的信息:例如名稱等等
簽名:JWT
的最後一部分就是簽名了,主要包括三部分:服務器
這三部分就是通過base64加密後的header
和payload
而後經過header
中的加密方式進行加鹽secret
組合加密。
而後上面三部分其實就是下面這段字符串的組合微信
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
複製代碼
用戶經過登陸頁,進行登陸。app
服務端經過登陸鑑權,若是用戶合法,根據用戶的信息和規劃返回JWT
。分佈式
把生成的Token
返回給用戶。
4.用戶在之後受保護的請求中,都會在請求頭中加入Authorization: Bearer xxxx(token)
。
5.服務器端對此token
進行驗證看是否合法,返回結果。
6.用戶接收返回結果。
通常是在請求頭中加入Authorization
,並加上Bearer
標註
fetch('api/getUser/1', {
headers: {
'Authorization': 'Bearer ' + token
}
})
複製代碼
以上就是JWT
的簡單使用了~