首頁  >  文章  >  後端開發  >  為什麼我的 echo jwt 自訂程式碼不起作用?

為什麼我的 echo jwt 自訂程式碼不起作用?

WBOY
WBOY轉載
2024-02-08 22:50:341172瀏覽

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

php小編魚仔經常收到讀者的問題,其中一個常見的問題是關於"為什麼我的 echo jwt 自訂程式碼不起作用?"。在使用 JWT(JSON Web Token)時,有時我們會遇到自訂程式碼不起作用的情況,這可能是因為一些常見的問題導致的。在本文中,我們將詳細解答這個問題,並提供解決方案,幫助讀者解決這個困擾他們的問題。讓我們一起來看看吧!

問題內容

我正在使用 echo jwt 驗證用戶,我在查看手冊時進行自定義,但它沒有應用。我想要兩件事。

  1. 我想在沒有不記名關鍵字的情況下進行令牌檢查

  2. 我想要傳回一條適合未找到令牌或令牌無效的情況的錯誤訊息。

如何修改上面的程式碼來達到我想要的效果?

我剛開始學習 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
        },
    })

解決方法

以下是您可以遵循的步驟:

  1. 在不使用「bearer」關鍵字的情況下進行令牌檢查:為此,您 可以將 tokenlookup 值從“header:authorization”更改為 「查詢:令牌」。這將允許您將令牌作為查詢傳遞 參數而不是在標頭中。

  2. 傳回適合情況的自訂錯誤訊息 未找到令牌或令牌無效:為此,您可以 修改錯誤處理函數

這是一個例子:

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中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除