echo 跳过 JWT 中间件

oak*_*ose 2 go jwt go-echo

我使用 golang jwt 中间件。

e.Use(middleware.JWTWithConfig(middleware.JWTConfig{
  SigningKey:  []byte(os.Getenv("Signing_Key")),
  TokenLookup: "header:x-auth-token",       
}))
Run Code Online (Sandbox Code Playgroud)

它等待所有功能的令牌,但我不想使用这个中间件进行登录功能。如何防止这种情况发生?

Зел*_*ный 11

有一个skipper功能。您可以使用它来检查要跳过哪条路线。

JWTConfig struct {
  // Skipper defines a function to skip middleware.
  Skipper Skipper
  ... 
}
Run Code Online (Sandbox Code Playgroud)

检查一个例子

e.Use(middleware.JWTWithConfig(middleware.JWTConfig{
    SigningKey:  []byte(os.Getenv("Signing_Key")),
    TokenLookup: "header:x-auth-token",
    Skipper: func(c echo.Context) bool {
       // Skip middleware if path is equal 'login'
       if c.Request().URL.Path == "/login" {
         return true
       }
       return false
    },
}))
 
Run Code Online (Sandbox Code Playgroud)