editor php Banana akan memperkenalkan konsep penting dalam JWT (JSON Web Token) dalam artikel ini: tandatangan token. JWT ialah piawaian keselamatan untuk menghantar maklumat antara aplikasi web. Dalam JWT, tandatangan token ialah mekanisme untuk melindungi integriti dan ketulenan token. Sebaik sahaja token ditandatangani, sebarang gangguan atau pemalsuan token akan dikesan serta-merta. Walau bagaimanapun, kadangkala kita mungkin perlu tidak mengekalkan tandatangan tuntutan JWT dalam situasi tertentu, dan artikel ini akan menerangkan secara terperinci cara mencapai keperluan ini.
Saya mempunyai kod berikut. Saya menggunakan tuntutan tersuai untuk mencipta token web json (menggunakan golang-jwt). Masalahnya ialah apabila saya menandatangani token menggunakan kunci (kaedah = hs256) dan kemudian menghuraikan token, tuntutan berubah. Apa kesilapan yang saya lakukan.
Kod:
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) }
Output
What was put 8 What was parsed 0
Anda perlu mengeksport medan id pengguna (jadikan ia bermula dengan huruf besar). Medan yang tidak dieksport tidak boleh dikodkan json.
type MyCustomClaims struct { UserID int `json:"userid"` jwt.RegisteredClaims }
Atas ialah kandungan terperinci Tuntutan JWT tidak disimpan selepas tandatangan token. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!