JWT(JSON Web Token)是一種用于在網(wǎng)絡(luò)應(yīng)用中傳遞聲明的基于JSON格式的開放標準。在認證方面,JWT通過在用戶和服務(wù)器之間傳遞安全可靠的信息,為應(yīng)用程序提供了一種解決方案。
在Vue應(yīng)用中,我們可以使用JWT來進行用戶身份驗證,并保護Vue應(yīng)用的安全性。下面是一個簡單的實現(xiàn):
import jwt from 'jsonwebtoken'
...
const token = jwt.sign(payload, secret)
// 將token保存到本地storage
localStorage.setItem('token', token)
...
// 在請求頭中添加Authorization字段
axios.defaults.headers.common['Authorization'] = localStorage.getItem('token')
上面的代碼中,我們使用jsonwebtoken庫來生成JWT token,并將其保存到本地的storage中。然后,在發(fā)送請求時,在請求頭中添加Authorization字段,其值為存儲在本地storage中的token。
需要注意的是,我們還需要在Vue應(yīng)用中處理token過期的情況。下面是一個處理過期token的示例:
import jwt from 'jsonwebtoken'
...
const token = localStorage.getItem('token')
if (token) {
const decoded = jwt.decode(token, {complete: true})
if (decoded.payload.exp< Date.now() / 1000) {
// token過期,需要重新登錄
localStorage.removeItem('token')
// 跳轉(zhuǎn)到登錄頁面
this.$router.push('/login')
}
} else {
// 沒有token,需要登錄
this.$router.push('/login')
}
...
上面的代碼中,我們首先從本地storage中提取token,并檢查其是否過期。如果token已經(jīng)過期,我們需要將其從storage中刪除,并將用戶重定向到登錄頁面。如果沒有token,則表示用戶應(yīng)該登錄,我們也需要將用戶重定向到登錄頁面。