在前后端分離的應(yīng)用中,前端通常會(huì)使用 JWT(JSON Web Token)來(lái)進(jìn)行身份驗(yàn)證和授權(quán)。使用 Vue 開(kāi)發(fā) web 應(yīng)用時(shí),我們也常常需要對(duì) JWT 進(jìn)行解析和處理。
JWT 是一個(gè)包含了用戶身份信息和權(quán)限信息的 JSON 對(duì)象,它包含了三個(gè)部分:header、payload 和 signature。header 包含了 JWT 的類型、簽名算法等信息;payload 包含了用戶的身份信息和權(quán)限等數(shù)據(jù);signature 則是對(duì) header 和 payload 進(jìn)行簽名得到的字符串。具體的 JWT 結(jié)構(gòu)可以參考以下代碼:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
想要對(duì) JWT 進(jìn)行解析,我們可以使用如下的代碼:
import jwtDecode from 'jwt-decode' const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' const decoded = jwtDecode(token) console.log(decoded)
在上面的代碼中,我們使用了 jwt-decode 庫(kù)對(duì) JWT 進(jìn)行了解碼。解碼后,我們可以在控制臺(tái)中看到解析出的對(duì)象,其中包含了 JWT 中存儲(chǔ)的用戶身份信息和權(quán)限等數(shù)據(jù)。
在 Vue 應(yīng)用中使用 JWT 進(jìn)行用戶登錄后,我們可以將 JWT 存儲(chǔ)在本地存儲(chǔ)中,在其他頁(yè)面中可以通過(guò)解析 JWT 來(lái)獲取用戶身份信息和權(quán)限數(shù)據(jù),從而實(shí)現(xiàn)權(quán)限控制和用戶信息展示等功能。