Maison > Article > développement back-end > Les revendications JWT ne sont pas conservées après la signature du jeton
l'éditeur php Banana présentera un concept important dans JWT (JSON Web Token) dans cet article : la signature du token. JWT est une norme de sécurité permettant de transmettre des informations entre des applications Web. Dans JWT, la signature de jeton est un mécanisme permettant de protéger l'intégrité et l'authenticité du jeton. Une fois le token signé, toute falsification ou falsification du token sera immédiatement détectée. Cependant, il se peut que nous devions parfois ne pas conserver la signature de la réclamation JWT dans certaines situations, et cet article expliquera en détail comment répondre à cette exigence.
J'ai le code suivant. J'utilise des revendications personnalisées pour créer un jeton Web json (en utilisant golang-jwt). Le problème est que lorsque je signe le jeton à l'aide de la clé (méthode = hs256) et que j'analyse ensuite le jeton, les revendications changent. Quelle erreur ai-je commise.
Code :
package main import ( "fmt" "time" "github.com/golang-jwt/jwt/v4" ) type mycustomclaims struct { userid int jwt.registeredclaims } func (app *config) generatejwt(userid int) { //code to generate jwt jt := jwt.newwithclaims(jwt.signingmethodhs256, mycustomclaims{ userid, jwt.registeredclaims{ expiresat: jwt.newnumericdate(time.now().add(3 * time.hour)), issuedat: jwt.newnumericdate(time.now()), }, }) fmt.println("what was put", jt.claims.(mycustomclaims).userid) token, _ := jt.signedstring(app.secret) //code to check whether claims are retained parsed_token, _ := jwt.parsewithclaims(token, &mycustomclaims{}, func(t *jwt.token) (interface{}, error) { return app.secret, nil }) fmt.println("what was parsed", parsed_token.claims.(*mycustomclaims).userid) }
Sortie
What was put 8 What was parsed 0
Vous devez exporter le champ d'identification de l'utilisateur (le faire commencer par une lettre majuscule). Les champs non exportés ne peuvent pas être codés en JSON.
type MyCustomClaims struct { UserID int `json:"userid"` jwt.RegisteredClaims }
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!