gin-jwt對API進行許可權控制
阿新 • • 發佈:2019-09-04
前言
之前文章簡單介紹瞭如何執行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