Maison > développement back-end > Golang > Comment décoder les jetons JWT dans Go à l'aide de la bibliothèque jwt-go ?

Comment décoder les jetons JWT dans Go à l'aide de la bibliothèque jwt-go ?

Barbara Streisand
Libérer: 2024-12-18 19:00:17
original
659 Les gens l'ont consulté

How to Decode JWT Tokens in Go Using the jwt-go Library?

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
Copier après la connexion

Étape 2 : Importer la bibliothèque

import "github.com/dgrijalva/jwt-go"
Copier après la connexion

É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{}
Copier après la connexion

É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
})
Copier après la connexion

Étape 5 : Gestion des erreurs

Gérez toutes les erreurs pouvant survenir lors de l'analyse du jeton.

if err != nil {
    // Handle error
}
Copier après la connexion

É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)
}
Copier après la connexion

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"])
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal