Implementation of golang jwt+token validation

  • 2020-11-20 06:08:10
  • OfStack

Token authentication is an important way to verify user identity. It is widely used in golang development. This paper mainly describes token authentication after jwt packet encryption.

The import package:


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

The user login request pulls out 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) {
   //  validation token  Is it legal 
   base.ErrorResponse(w, http.StatusUnauthorized, "Authorization Is Invalid")
   return
  }
}

token is mainly used to generate, verify, and parse token to obtain the validity of uid and token on user request


Related articles: