首頁 > 軟體

golang jwt+token驗證的實現

2020-10-21 15:01:14

Token驗證是驗證使用者身份的重要方式,在golang開發中具有廣泛應用,文中主要闡述了利用jwt包加密後的token驗證。

匯入包:

import (
  "github.com/dgrijalva/jwt-go"
)
// GenerateToken 生成Token
func GenerateToken(mapClaims jwt.MapClaims, key string) (string, error) {
  token := jwt.NewWithClaims(jwt.SigningMethodHS256, mapClaims)
  return token.SignedString([]byte(key))
}
// 驗證token
func checkToken(uid int64,token *jwt.Token) bool {
  tokens, _ := token.SignedString([]byte(JWTKey))
  redisToken, _ := GetMemberToken(uid)
  if tokens != redisToken {
   return false
  }
  return true
}

使用者登入請求取出token

token, err := request.ParseFromRequest(r, request.AuthorizationHeaderExtractor, func(token *jwt.Token) (interface{}, error) {
  return []byte(JWTKey), nil
})
if err == nil && token.Valid {
  tokenMap := token.Claims.(jwt.MapClaims)
  uidStr := tokenMap["uid"].(string)
  uid, _ := strconv.ParseInt(uidStr,10,64)

  if !checkToken(uid, token) {
   // 驗證token 是否合法
   base.ErrorResponse(w, http.StatusUnauthorized, "Authorization Is Invalid")
   return
  }
}

token主要是生成,驗證,以及使用者請求時解析token得出使用者uid和token的有效性

到此這篇關於golang jwt+token驗證的實現的文章就介紹到這了,更多相關golang jwt+token驗證內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com