Golang echo middleware перенаправляет с пустой страницы

Я тестирую редирект о echo, когда я просто использую метод для перенаправления, он может успешно отобразить страницу login.html, но если я использую тест промежуточного программного обеспечения, он всегда показывает пустую страницу login.htmlчто мне не хватает?

    e.Group("*.html", func(next echo.HandlerFunc) echo.HandlerFunc {  //1
        return func(c echo.Context) error {
            uri := c.Request().URL.String()
            log.Println("uri:" + uri)
            if uri != "/login.html" && uri != "/favicon.ico" {
                c.Redirect(http.StatusSeeOther, "login.html")
                return nil
            }
            return nil
        }
    })
    e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
    e.GET("/aa", func(c echo.Context) error {   //2
        c.Redirect(http.StatusSeeOther, "login.html")
        return nil
    })

1 ответ

Я вижу, что вы упускаете зов next для продолжения цепочки запросов.

См. Пример здесь: https://echo.labstack.com/cookbook/middleware/

      // ServerHeader middleware adds a `Server` header to the response.
func ServerHeader(next echo.HandlerFunc) echo.HandlerFunc {
    return func(c echo.Context) error {
        c.Response().Header().Set(echo.HeaderServer, "Echo/3.0")
        return next(c)
    }
}

Увидеть return next(c), он продолжает обрабатывать запрос, отбрасывая все промежуточное ПО и, в конечном итоге, login.html статический обработчик.

Поскольку вы не звоните, он останавливает цепочку и ничего не делает.

Другие вопросы по тегам