chore(deps): upgrade echo framework from v4 to v5 and remove custom context middleware

This commit is contained in:
keven1024
2026-02-26 16:09:47 +08:00
parent e9d0848f87
commit b98853ebe1
20 changed files with 64 additions and 125 deletions

View File

@@ -3,14 +3,14 @@ package middleware
import (
"github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v5"
gonanoid "github.com/matoous/go-nanoid/v2"
)
// CustomMiddleware 创建自定义中间件
func AuthMiddleware() echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
return func(c *echo.Context) error {
sess, err := session.Get("session", c)
if err != nil {
return err
@@ -30,11 +30,8 @@ func AuthMiddleware() echo.MiddlewareFunc {
return err
}
}
cc := c.(*CustomContext)
cc.Auth = sess.Values["auth"]
// 将自定义上下文传递给下一个处理器
return next(cc)
c.Set("auth", sess.Values["auth"])
return next(c)
}
}
}

View File

@@ -1,28 +0,0 @@
package middleware
import (
"github.com/labstack/echo/v4"
)
// CustomContext 扩展 echo.Context 以添加自定义功能
type CustomContext struct {
echo.Context
Auth interface{}
}
// NewCustomContext 创建自定义上下文的构造函数
func NewCustomContext(c echo.Context) *CustomContext {
return &CustomContext{
Context: c,
}
}
// ContextMiddleware 中间件用于将标准 echo.Context 转换为 CustomContext
func ContextMiddleware() echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
cc := NewCustomContext(c)
return next(cc)
}
}
}

View File

@@ -1,8 +1,8 @@
package middleware
import (
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/labstack/echo/v5"
"github.com/labstack/echo/v5/middleware"
"go.uber.org/zap"
)
@@ -10,7 +10,7 @@ func LoggerMiddleware() echo.MiddlewareFunc {
return middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{
LogURI: true,
LogStatus: true,
LogValuesFunc: func(c echo.Context, v middleware.RequestLoggerValues) error {
LogValuesFunc: func(c *echo.Context, v middleware.RequestLoggerValues) error {
zap.L().Info("request",
zap.String("url", v.URI),
zap.Int("status", v.Status),

View File

@@ -5,9 +5,8 @@ import (
"slices"
"time"
"github.com/labstack/echo/v4"
echo_middleware "github.com/labstack/echo/v4/middleware"
"golang.org/x/time/rate"
"github.com/labstack/echo/v5"
echo_middleware "github.com/labstack/echo/v5/middleware"
)
type RateSkiper struct {
@@ -23,22 +22,22 @@ var RateSkipList = []RateSkiper{
func RateLimiterMiddleware() echo.MiddlewareFunc {
config := echo_middleware.RateLimiterConfig{
Skipper: func(e echo.Context) bool {
Skipper: func(e *echo.Context) bool {
path := e.Path()
r := e.Request()
return slices.Contains(RateSkipList, RateSkiper{Path: path, Method: r.Method})
},
Store: echo_middleware.NewRateLimiterMemoryStoreWithConfig(
echo_middleware.RateLimiterMemoryStoreConfig{Rate: rate.Limit(10), Burst: 30, ExpiresIn: 3 * time.Minute},
echo_middleware.RateLimiterMemoryStoreConfig{Rate: 10, Burst: 30, ExpiresIn: 3 * time.Minute},
),
IdentifierExtractor: func(ctx echo.Context) (string, error) {
IdentifierExtractor: func(ctx *echo.Context) (string, error) {
id := ctx.RealIP()
return id, nil
},
ErrorHandler: func(context echo.Context, err error) error {
ErrorHandler: func(context *echo.Context, err error) error {
return context.JSON(http.StatusForbidden, nil)
},
DenyHandler: func(context echo.Context, identifier string, err error) error {
DenyHandler: func(context *echo.Context, identifier string, err error) error {
return context.JSON(http.StatusTooManyRequests, nil)
},
}

View File

@@ -3,7 +3,7 @@ package middleware
import (
"github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v5"
)
func SessionMiddleware() echo.MiddlewareFunc {