Warum funktioniert mein benutzerdefinierter Echo-JWT-Code nicht?

WBOY
Freigeben: 2024-02-08 22:50:34
nach vorne
1152 Leute haben es durchsucht

为什么我的 echo jwt 自定义代码不起作用?

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!

Frageninhalt

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.

  1. Ich möchte eine Token-Prüfung ohne Inhaberschlüsselwort durchführen

  2. 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
        },
    })
Nach dem Login kopieren

Lösung

Hier sind die Schritte, denen Sie folgen können:

  1. 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.

  2. 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
     },
 })
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!