php-Editor Yuzai erhält häufig Fragen von Lesern. Eine der häufigsten Fragen lautet: „Warum funktioniert mein benutzerdefinierter Echo-JWT-Code nicht?“. Bei der Verwendung von JWT (JSON Web Token) kommt es manchmal vor, dass benutzerdefinierter Code nicht funktioniert. Dies kann an einigen häufigen Problemen liegen. In diesem Artikel werden wir diese Frage ausführlich beantworten und Lösungen anbieten, die den Lesern helfen, dieses Problem zu lösen, das sie stört. Lass uns einen Blick darauf werfen!
Ich verwende echo jwt, um den Benutzer zu authentifizieren. Ich habe es angepasst, als ich mir das Handbuch angesehen habe, aber es wird nicht angewendet. Ich möchte zwei Dinge.
Ich möchte eine Token-Prüfung ohne Inhaberschlüsselwort durchführen
Ich möchte eine Fehlermeldung zurückgeben, die für den Fall geeignet ist, dass das Token nicht gefunden wird oder ungültig ist.
Wie ändere ich den obigen Code, um den gewünschten Effekt zu erzielen?
Ich habe gerade angefangen, Golang zu lernen, ich wäre für jeden Rat sehr dankbar
output := echojwt.JWT(&echojwt.Config{ SigningKey: []byte(key.EnvSecretKey), TokenLookup: "header:Authorization", ErrorHandler: func(c echo.Context, err error) error { if err != nil { return c.JSON(400, "custom error") } return nil }, })
Hier sind die Schritte, denen Sie folgen können:
Token-Prüfung ohne Verwendung des Schlüsselworts „Bearer“: dafür Sie Sie können den Tokenlookup-Wert von „header:authorization“ in ändern „Abfrage: Token“. Dadurch können Sie das Token als Abfrage übergeben Parameter statt im Header.
Benutzerdefinierte, der Situation entsprechende Fehlermeldungen zurückgeben Token nicht gefunden oder ungültig: Dies können Sie tun Fehlerbehandlungsfunktion ändern
Hier ist ein Beispiel:
output := echojwt.JWT(&echojwt.Config{ SigningKey: []byte(key.EnvSecretKey), TokenLookup: "query:token", ErrorHandler: func(c echo.Context, err error) error { if err == jwt.ErrTokenNotFound { return c.JSON(http.StatusBadRequest, "token not found") } if ve, ok := err.(*jwt.ValidationError); ok { if ve.Errors&jwt.ValidationErrorMalformed != 0 { return c.JSON(http.StatusBadRequest, "token is malformed") } else if ve.Errors&(jwt.ValidationErrorExpired|jwt.ValidationErrorNotValidYet) != 0 { return c.JSON(http.StatusUnauthorized, "token is expired or not valid yet") } else { return c.JSON(http.StatusBadRequest, "token is invalid") } } return nil }, })
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein benutzerdefinierter Echo-JWT-Code nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!