1. 程式人生 > >gin-jwt對API進行許可權控制

gin-jwt對API進行許可權控制

前言

之前文章簡單介紹瞭如何執行gin+vue的前後端分離開源專案,該專案是學習了Gin實踐教程後結合vue-element-admin寫的,該教程講得很詳細,適合入門Gin。本篇文章將介紹gin+vue的前後端分離開源專案中如何使用gin-jwt對API進行許可權驗證。

安裝gin-jwt

在GOPATH目錄下執行

go get github.com/appleboy/gin-jwt

初始化jwt中介軟體

gin-jwt已經幫我們封裝成中介軟體了,我們只需要設定並例項化它就可以直接用了。
現在來看看專案中middleware/myjwt/gin_jwt.go檔案:

總的就是呼叫jwt.New函式來例項化一個jwt.GinJWTMiddleware

然後我們看下jwt.GinJWTMiddleware中定義的屬性和方法

  • TokenLookup:token檢索模式,用於提取token,預設值為header:Authorization
  • SigningAlgorithm:簽名演算法,預設值為HS256
  • Timeout:token過期時間,預設值為time.Hour
  • TimeFunc:測試或伺服器在其他時區可設定該屬性,預設值為time.Now
  • TokenHeadName:token在請求頭時的名稱,預設值為Bearer
  • IdentityKey:身份驗證的key值,預設值為identity
  • Realm:可以理解成該中介軟體的名稱,用於展示,預設值為gin jwt
  • CookieName:Cookie名稱,預設值為jwt
  • privKey:私鑰
  • pubKey:公鑰
  • Authenticator函式:根據登入資訊對使用者進行身份驗證的回撥函式
  • PayloadFunc函式:登入期間的回撥的函式
  • IdentityHandler函式:解析並設定使用者身份資訊
  • Authorizator函式:接收使用者資訊並編寫授權規則,本專案的API許可權控制就是通過該函式編寫授權規則的
  • Unauthorized函式:處理不進行授權的邏輯
  • LoginResponse函式:完成登入後返回的資訊,使用者可自定義返回資料,預設返回
{
  "code": http.StatusOK,
  "token": token,
  "expire": expire.Format(time.RFC3339)
}
  • RefreshResponse函式:重新整理token後返回的資訊,使用者可自定義返回資料,預設返回
{
  "code": http.StatusOK,
  "token": token,
  "expire": expire.Format(time.RFC3339)
}

到這裡我們應該就知道如何使用這個中介軟體了。

使用中介軟體

例項化中介軟體後,直接在路由組中使用該中介軟體就可以了

原始碼地址:https://github.com/Bingjian-Zhu/gin-vue