在前端開發中實現基于 token 的身份驗證是相當常見的操作,而借助 Vue 這一前端框架,我們可以非常方便地實現這樣的功能。下面將詳細介紹 Vue 實現基于 token 的流程和具體步驟。
第一步是在登錄操作中獲取 token。在 Vue 中發送登錄請求后,服務器會返回一個 token,我們可以將其保存在瀏覽器的 localStorage 中。代碼如下:
// 發送登錄請求 axios.post('/user/login', { username: this.username, password: this.password }).then(res =>{ // 登錄成功后保存 token localStorage.setItem('token', res.data.token) })
第二步是在每次請求中攜帶 token。在 Vue 中發送請求時,可以通過 axios 攔截器實現自動攜帶 token。代碼如下:
// 創建 axios 實例 const instance = axios.create({ timeout: 5000 }) // 添加請求攔截器 instance.interceptors.request.use(config =>{ // 從 localStorage 中獲取 token 并添加到請求 header 中 const token = localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, error =>{ return Promise.reject(error) }) // 發送請求 instance.get('/api/data').then(res =>{ // 處理返回數據 })
第三步是在服務器端進行 token 校驗。在服務器端對需要進行身份驗證的接口進行 token 校驗,確保當前請求攜帶了有效的 token。代碼如下:
// 進行 token 校驗 app.use('/api', (req, res, next) =>{ // 獲取 header 中的 token const token = req.headers.authorization.split(' ')[1] // 驗證 token 是否合法 jwt.verify(token, 'secret', (err, decoded) =>{ if (err) { res.status(401).json({ error: 'Unauthorized' }) } else { next() } }) }) // 返回需要進行身份驗證的數據 app.get('/api/data', (req, res) =>{ res.send('protected data') })
以上是在 Vue 中實現基于 token 的身份驗證的完整流程。需要注意的是,在實際開發中,應該將 token 存儲在 HttpOnly 的 Cookie 中來提高安全性。