国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解JWT token心得與使用實例

2024-05-06 15:36:14
字體:
來源:轉載
供稿:網友

本文你能學到什么?

token的組成
token串的生成流程。
token在客戶端與服務器端的交互流程
Token的優點和思考
參考代碼:核心代碼使用參考,不是全部代碼

JWT token的組成

頭部(Header),格式如下:

{ “typ”: “JWT”, “alg”: “HS256” } 

由上可知,該token使用HS256加密算法,將頭部使用Base64編碼可得到如下個格式的字符串:

eyJhbGciOiJIUzI1NiJ9

有效載荷(Playload):

{ “iss”: “Online JWT Builder”, “iat”: 1416797419, “exp”: 1448333419, ……. “userid”:10001 } 

有效載荷中存放了token的簽發者(iss)、簽發時間(iat)、過期時間(exp)等以及一些我們需要寫進token中的信息。有效載荷也使用Base64編碼得到如下格式的字符串:

eyJ1c2VyaWQiOjB9

簽名(Signature):

將Header和Playload拼接生成一個字符串str=“eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyaWQiOjB9”,使用HS256算法和我們提供的密鑰(secret,服務器自己提供的一個字符串)對str進行加密生成最終的JWT,即我們需要的令牌(token),形如:str.”簽名字符串”。

token在服務與客戶端的交互流程

1:客戶端通過用戶名和密碼登錄
2:服務器驗證用戶名和密碼,若通過,生成token返回給客戶端。
3:客戶端收到token后以后每次請求的時候都帶上這個token,相當于一個令牌,表示我有權限訪問了
4:服務器接收(通常在攔截器中實現)到該token,然后驗證該token的合法性(為什么能驗證下面說)。若該token合法,則通過請求,若token不合法或者過期,返回請求失敗。

關于Token的思考

服務如何判斷這個token是否合法?

由上面token的生成可知,token中的簽名是由Header和有效載荷通過Base64編碼生成再通過加密算法HS256和密鑰最終生成簽名,這個簽名位于JWT的尾部,在服務器端同樣對返回過來的JWT的前部分再進行一次簽名生成,然后比較這次生成的簽名與請求的JWT中的簽名是否一致,若一致說明token合法。由于生成簽名的密鑰是服務器才知道的,所以別人難以偽造。

token中能放敏感信息嗎?
不能,因為有效載荷是經過Base64編碼生成的,并不是加密。所以不能存放敏感信息。

Token的優點

(1)相比于session,它無需保存在服務器,不占用服務器內存開銷。
(2)無狀態、可拓展性強:比如有3臺機器(A、B、C)組成服務器集群,若session存在機器A上,session只能保存在其中一臺服務器,此時你便不能訪問機器B、C,因為B、C上沒有存放該Session,而使用token就能夠驗證用戶請求合法性,并且我再加幾臺機器也沒事,所以可拓展性好就是這個意思。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 景东| 宝丰县| 临泉县| 嘉祥县| 钦州市| 左贡县| 宁陕县| 繁昌县| 赤水市| 汝州市| 全南县| 天峻县| 普安县| 福贡县| 蛟河市| 神农架林区| 高尔夫| 金平| 马公市| 玉环县| 龙南县| 花莲市| 巫溪县| 项城市| 肥乡县| 紫阳县| 象山县| 威信县| 白沙| 海盐县| 黄石市| 丰城市| 黎城县| 四会市| 濮阳市| 保定市| 曲松县| 农安县| 襄樊市| 武邑县| 辽源市|