Wie behebt JWT die Gültigkeit und Fehler von Ansprüchen?

王林
Freigeben: 2024-02-06 11:12:03
nach vorne
446 Leute haben es durchsucht

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

Frageninhalt

Ich erstelle eine Zugriffs- und Aktualisierungstokenlogik und möchte prüfen, ob das Zugriffstoken gültig (nicht bearbeitet) ist, auch wenn es abgelaufen ist. Wenn das Token abläuft, gibt Go einen Fehler zurück und macht das Token ungültig. Also überprüfe ich, ob der angegebene Fehler mit ErrTokenExpired übereinstimmt.

Kann ich 100 % sicher sein, dass der Fehler nicht Null ist, wenn das Token ungültig ist, sodass ich es löschen kann if !tkn.Valid{...?

Ist das generell ein guter Ansatz oder wird der bearbeitete Token meine Verifizierung bestehen?

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
}
Nach dem Login kopieren
_, 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
    }
Nach dem Login kopieren


Richtige Antwort


JWT-Tokens sind sicher, wenn Ihr Code zwei Punkte enthält:

1-Wählen Sie einen guten Algorithmus
2- Erstellen Sie einen zufälligen Schlüssel

Wenn sich das Token ändert oder eine Zeitüberschreitung auftritt, können Ihnen diese beiden Optionen helfen: VerifyJWTEinen Fehler zurückgeben!

Hinweis: Sie müssen immer auf Fehler prüfen und dem Kunden eine gute Antwort geben.

<小时/>

Hinweis (verbessern Sie Ihren Code): Um zu überprüfen, ob ein Fehler ErrTokenExpired ist, verwenden Sie errors pkg.

Dein Beispiel:

// 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
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behebt JWT die Gültigkeit und Fehler von Ansprüchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage