Décodage des jetons JWT dans Go à l'aide de jwt-go
Lorsque vous travaillez avec des applications Go, il est souvent nécessaire de décoder JWT (JSON Web Token ) jetons pour accéder aux informations utilisateur et à d’autres données pertinentes. Voici un guide complet sur la façon d'y parvenir de manière transparente en utilisant la populaire bibliothèque dgrijalva/jwt-go.
Étape 1 : Installer la bibliothèque jwt-go
go get github.com/dgrijalva/jwt-go
Étape 2 : Importer la bibliothèque
import "github.com/dgrijalva/jwt-go"
Étape 3 : Initialiser MapClaims
Le package jwt-go vous permet de décoder les jetons en structures de revendications personnalisées. Pour des données simples, vous pouvez utiliser jwt.MapClaims. Initialisez une nouvelle instance MapClaims.
claims := jwt.MapClaims{}
Étape 4 : Analyser le jeton
Utilisez la fonction jwt.ParseWithClaims pour analyser le jeton JWT. Spécifiez la chaîne du jeton et jwt.MapClaims comme deuxième argument.
token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) { return []byte("YOUR_VERIFICATION_KEY"), nil })
Étape 5 : Gestion des erreurs
Gérez toutes les erreurs pouvant survenir lors de l'analyse du jeton.
if err != nil { // Handle error }
Étape 6 : Décoder Réclamations
Les réclamations analysées sont désormais stockées dans la variable claims. Parcourez la carte pour accéder aux informations décodées.
for key, val := range claims { fmt.Printf("Key: %v, value: %v\n", key, val) }
Exemple complet :
package main import ( "encoding/json" "fmt" "log" "github.com/dgrijalva/jwt-go" ) func main() { tokenString := "YOUR_JWT_TOKEN" // Replace this with your actual token key := []byte("YOUR_VERIFICATION_KEY") claims := jwt.MapClaims{} token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) { return key, nil }) if err != nil { log.Fatal(err) } // Validate token signature if !token.Valid { log.Fatal("Invalid token signature") } // Decode claims var user map[string]interface{} json.Unmarshal([]byte(claims["user"].(string)), &user) fmt.Printf("User: %v\n", user["name"]) }
Ce code suppose que les informations utilisateur sont stockées sous forme de chaîne JSON. dans le jeton JWT. Vous pouvez le modifier pour qu'il corresponde à votre structure de jetons spécifique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!