2016-10-04 20 views
2

我正在使用dgrijalva/jwt-go /包。golang從jwt token提取聲明

我想從令牌中提取有效載荷,但我找不到一種方法來實現它。


實施例(摘自:https://jwt.io/):

用於編碼:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

我想提取有效載荷:

{ 
    "sub": "1234567890", 
    "name": "John Doe", 
    "admin": true 
} 

我將是(使用golang)的示例感激。

回答

3

示例代碼:

func extractClaims(tokenStr string) (jwt.MapClaims, bool) { 
     hmacSecretString := // Value 
     hmacSecret := []byte(hmacSecretString) 
     token, err := jwt.Parse(tokenStr, func(token *jwt.Token) (interface{}, error) { 
      // check token signing method etc 
      return hmacSecret, nil 
     }) 

     if err != nil { 
      return nil, false 
     } 

     if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { 
      return claims, true 
     } else { 
      log.Printf("Invalid JWT Token") 
      return nil, false 
     } 
    }