Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt JWT die Gültigkeit und Fehler von Ansprüchen?

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

王林
王林nach vorne
2024-02-06 11:12:03408Durchsuche

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

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
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen