首頁  >  文章  >  web前端  >  Vue實作前後端分離的完整指南(axios、jwt)

Vue實作前後端分離的完整指南(axios、jwt)

王林
王林原創
2023-06-09 16:06:431809瀏覽

Vue實現前後端分離的完整指南(axios、jwt)

隨著前端技術的不斷發展,前後端分離已成為Web開發的趨勢。 Vue作為一款流行的前端框架,與後端分離的開發方式完美搭配。本文將介紹如何使用Vue配合axios和jwt實作前後端分離開發,並提供程式碼範例和注意事項。

一、什麼是axios?

axios是一個基於Promise用於瀏覽器和node.js的HTTP客戶端,它享有以下優點:

  1. 支援Promise API
  2. 客戶端和服務端均可使用
  3. 支援攔截請求和回應
  4. 支援取消請求

二、什麼是jwt?

jwt(JSON Web Token)是一個輕量級的身份驗證和授權標準。它允許一個安全的方式在不同的應用程式之間驗證資訊。 jwt由三個部分組成:頭部、負載和簽名。頭部包含令牌類型、加密演算法等資訊;負載包含需要傳遞的訊息,可以自訂;簽名則用來驗證令牌是否已被竄改。

三、如何在Vue中使用axios?

在Vue元件中使用axios進行請求數據,步驟如下:

    ##安裝axios:可以使用npm進行安裝,指令如下:
npm install axios --save

    導入axios:在需要使用axios的元件中,需要先導入axios,範例程式碼如下:
import axios from 'axios'

    傳送請求:使用axios傳送HTTP請求的方式如下:
axios.get('url')

.then(response => {
console.log(response.data)
})
.catch(error => {
console.log(error)
})

其中,url表示請求的URL位址;then()方法表示請求成功後的回呼函數,傳入的參數response即為伺服器傳回的資料;catch()方法表示請求失敗後的回呼函數,傳入的參數error為錯誤訊息。

四、如何使用jwt進行身份驗證?

在使用jwt進行身份驗證時,首先需要在服務端進行jwt的產生和驗證。

    產生jwt
在服務端,可以使用jsonwebtoken函式庫產生jwt,範例程式碼如下:

const jwt = require('jsonwebtoken')

const token = jwt.sign({ user: 'username' }, 'secretkey', { expiresIn: '1h' })

其中,user欄位可以儲存使用者資訊;secretkey是金鑰,用於對令牌進行加密;expiresIn欄位表示token的過期時間,可以根據需要進行調整。

    驗證jwt
在客戶端,需要從服務端取得jwt,然後進行驗證。使用jsonwebtoken庫進行jwt的驗證,範例程式碼如下:

const jwt = require('jsonwebtoken')

const token = 'xxxxx' // 從服務端取得到的token
try {
const decoded = jwt.verify(token, 'secretkey');
console.log(decoded) // { user: 'username', iat: 1622668826, exp: 1622672426 }
} catch (err ) {
console.log(err)
}

#其中,token為服務端產生的token;verify()方法用於驗證token的有效性,傳回的decoded物件包含了用戶資訊、發放時間(iat)和過期時間(exp)。

五、如何在Vue中使用jwt進行身份驗證?

在Vue中使用jwt進行身份驗證,步驟如下:

    取得token
在登入成功後,服務端需要將jwt令牌傳送到客戶端,客戶端可以將其儲存在localStorage或cookie中,範例程式碼如下:

axios.post('url', { user: 'username', password: 'password' })

.then(response => {
// 登入成功,將token儲存到localStorage中
localStorage.setItem('token', response.data.token)
})
. catch(error => {
console.log(error)
})

    #發送請求並攜帶token
  1. ##在需要請求需要身份驗證的介面時,客戶端需要在請求頭中攜帶token,範例程式碼如下:

axios.get('url', {

headers: { 'Authorization': 'Bearer ' localStorage.getItem( 'token') }

})
.then(response => {
console.log(response.data)
})
.catch(error => {
console.log(error)
})

其中,Authorization欄位為請求頭中的關鍵字,Bearer表示策略名稱,即Bearer Authentication Scheme的縮寫,後面的字串為儲存在localStorage中的jwt令牌。

注意事項:

在使用jwt進行驗證時,需要注意金鑰的保密性,否則可能會被攻擊者竄改或偽造jwt令牌。
  1. 在Vue中使用axios時,需要注意跨域問題,在服務端設定Access-Control-Allow-Origin回應頭或使用代理解決。
  2. 在開發環境中,可以使用webpack-dev-server解決跨域問題,範例程式碼如下:
  3. devServer: {
proxy: {

'/api': {
  target: 'http://localhost:3000',
  pathRewrite: { '^/api': '' }
}

}

}


其中,target表示目標URL位址,pathRewrite表示路徑重寫規則。

本文提供了使用Vue配合axios和jwt實作前後端分離開發的詳細步驟和注意事項,希望能對Web開發者有所幫助。

以上是Vue實作前後端分離的完整指南(axios、jwt)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn