在前端開發中,對于一些需要用戶認證的功能,我們需要將用戶的登錄狀態進行持久化,并在用戶每次進行操作時檢查用戶是否擁有相關的操作權限。而使用token作為用戶認證的令牌已經成為了一種廣泛使用的方式。在Vue中如何封裝token是我們需要解決的問題。
在項目中通常使用axios庫來發送http請求,我們可以在axios請求的攔截器中進行token的攔截,傳遞或更新token,這樣可以方便的實現token的管理。
import axios from 'axios' const baseURL = 'https://example.com/api/' export default function request(options) { // 創建axios實例 const instance = axios.create({ baseURL, timeout: 3000 }) // request請求攔截器 instance.interceptors.request.use(config =>{ // 從localStorage中獲取token const token = localStorage.getItem('token') // 如果有token,則向請求頭中添加token if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, err =>{ return Promise.reject(err) }) // response響應攔截器 instance.interceptors.response.use(response =>{ // 如果響應頭中有token,則更新localStorage中的token if (response.headers.authorization) { localStorage.setItem('token', response.headers.authorization) } return response }, err =>{ // 根據狀態碼進行相應的操作 return Promise.reject(err) }) // 發送請求 return instance(options) }
在這段代碼中,我們實現了一個request方法,這個方法接收一個options參數,所有的axios請求都通過這個方法來發送。當請求發送時,request方法會先對請求進行攔截,查看localStorage中是否存在token,如果存在,則將token添加到請求頭中。當服務器響應請求時,我們會從響應頭中獲取token并更新localStorage中的token。如果響應頭中沒有token,則不進行任何操作。
這樣我們就實現了一個Vue中封裝Token的方法,有效地管理用戶身份驗證所需的token。