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

  • 2019 年 10 月 3 日
  • 筆記

前言

之前文章簡單介紹了如何運行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)  }

到這裡我們應該就知道如何使用這個中間件了。

使用中間件

實例化中間件後,直接在路由組中使用該中間件就可以了
enter image description here

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