php小編魚仔經常收到讀者的問題,其中一個常見的問題是關於"為什麼我的 echo jwt 自訂程式碼不起作用?"。在使用 JWT(JSON Web Token)時,有時我們會遇到自訂程式碼不起作用的情況,這可能是因為一些常見的問題導致的。在本文中,我們將詳細解答這個問題,並提供解決方案,幫助讀者解決這個困擾他們的問題。讓我們一起來看看吧!
我正在使用 echo jwt 驗證用戶,我在查看手冊時進行自定義,但它沒有應用。我想要兩件事。
我想在沒有不記名關鍵字的情況下進行令牌檢查
我想要傳回一條適合未找到令牌或令牌無效的情況的錯誤訊息。
如何修改上面的程式碼來達到我想要的效果?
我剛開始學習 golang,任何建議將不勝感激
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 }, })
以下是您可以遵循的步驟:
在不使用「bearer」關鍵字的情況下進行令牌檢查:為此,您 可以將 tokenlookup 值從“header:authorization”更改為 「查詢:令牌」。這將允許您將令牌作為查詢傳遞 參數而不是在標頭中。
傳回適合情況的自訂錯誤訊息 未找到令牌或令牌無效:為此,您可以 修改錯誤處理函數
這是一個例子:
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 }, })
以上是為什麼我的 echo jwt 自訂程式碼不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!