Maison > développement back-end > Golang > Comment JWT résout-il la validité des revendications et les erreurs ?

Comment JWT résout-il la validité des revendications et les erreurs ?

王林
Libérer: 2024-02-06 11:12:03
avant
504 Les gens l'ont consulté

JWT 如何解析声明有效性和错误?

Contenu de la question

Je crée un accès, actualise la logique du jeton et je souhaite vérifier si le jeton d'accès est valide (non modifié) même s'il a expiré. Si le jeton expire, Go renverra une erreur et invalidera le jeton. Je vérifie donc si l'erreur donnée correspond à ErrTokenExpired.

Puis-je être sûr à 100 % que si le jeton n'est pas valide, l'erreur ne sera pas nulle afin que je puisse le supprimer if !tkn.Valid{... ?

Est-ce généralement une bonne approche ou le jeton modifié réussira-t-il ma vérification ?

func VerifyJWT(jwtString, secret string) (*jwt.Token, *Claims, error) {
    claims := &Claims{}
    tkn, err := jwt.ParseWithClaims(jwtString, claims, func(token *jwt.Token) (interface{}, error) {
        return []byte(os.Getenv(secret)), nil
    })
    return tkn, claims, err
}
Copier après la connexion
_, accClaims, err1 := VerifyJWT(req.Access, "ACCESS_SECRET")
    if err1 != nil && err1.Error()[:16] != jwt.ErrTokenExpired.Error()[:16] {
        WriteJSON(w, http.StatusBadRequest, APIError{Error: "invalid token access" + err1.Error()})
        return
    }
Copier après la connexion


Bonne réponse


les jetons jwt sont sûrs si vous avez deux points dans votre code :

1-Choisissez un bon algorithme
2- Créez une clé aléatoire

Si le jeton change ou expire, ces deux options peuvent vous aider, VerifyJWTRenvoyer une erreur !

Remarque : il faut toujours vérifier les erreurs et renvoyer une bonne réponse au client.

<小时/>

Remarque (améliorez votre code) : Pour vérifier si une erreur est ErrTokenExpired, utilisez errors pkg.

Votre exemple :

// import "errors"


_, accClaims, err := VerifyJWT(req.Access, "ACCESS_SECRET")
if errors.Is(err, jwt.ErrTokenExpired) {
        // continue progress
}

if err != nil {
    WriteJSON(w, http.StatusUnauthorized, APIError{Error: err.Error()})
    return
}
Copier après la connexion

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!

source:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal