Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah JWT menyelesaikan kesahihan dan ralat tuntutan?

Bagaimanakah JWT menyelesaikan kesahihan dan ralat tuntutan?

王林
王林ke hadapan
2024-02-06 11:12:03408semak imbas

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

Kandungan soalan

Saya sedang mencipta akses, muat semula logik token dan saya ingin menyemak sama ada token akses itu sah (tidak disunting) walaupun ia telah tamat tempoh. Jika token tamat tempoh, Go akan mengembalikan ralat dan membatalkan token. Jadi saya menyemak sama ada ralat yang diberikan sepadan dengan ErrTokenExpired.

Bolehkah saya 100% pasti bahawa jika token itu tidak sah, maka ralatnya tidak akan menjadi sifar supaya saya boleh memadamnya if !tkn.Valid{...?

Adakah ini secara umumnya pendekatan yang baik atau adakah token yang diedit akan lulus pengesahan saya?

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
}
_, 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
    }

Jawapan betul


token jwt selamat jika anda mempunyai dua mata dalam kod anda:

1-Pilih algoritma yang baik
2- Buat kunci rawak

Jika token berubah atau tamat tempoh, dua pilihan ini boleh membantu anda, VerifyJWTKembalikan ralat!

Nota: Sentiasa perlu menyemak kesilapan dan mengembalikan respons yang baik kepada pelanggan.

Nota (tingkatkan kod anda): Untuk menyemak sama ada ralat ialah ErrTokenExpired, gunakan errors pkg.

Contoh anda:

// 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
}

Atas ialah kandungan terperinci Bagaimanakah JWT menyelesaikan kesahihan dan ralat tuntutan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam