package middleware import ( "crypto/subtle" "net/http" "strings" "time" "github.com/labstack/echo/v4" ) const cookieName = "fs_token" func Auth(token string) echo.MiddlewareFunc { if token == "" { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { return next(c) } } } return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { // 1. Authorization header(API 调用,首选) auth := c.Request().Header.Get("Authorization") if len(auth) >= 7 && strings.HasPrefix(auth, "Bearer ") && subtle.ConstantTimeCompare([]byte(auth[7:]), []byte(token)) == 1 { setAuthCookie(c, token) return next(c) } // 2. Cookie(/