47 lines
833 B
Go
47 lines
833 B
Go
package middleware
|
|
|
|
import (
|
|
"allapp/utils/jwtx"
|
|
"allapp/utils/responsex"
|
|
"strings"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
const CtxUserIDKey = "user_id"
|
|
|
|
// Auth 登录校验中间件
|
|
func Auth() fiber.Handler {
|
|
return func(c fiber.Ctx) error {
|
|
token := strings.TrimSpace(c.Get("Token"))
|
|
if token == "" {
|
|
return responsex.Unauthorized(c, "未登录")
|
|
}
|
|
|
|
verifyToken, ok := jwtx.VerifyToken(c.Context(), token)
|
|
if !ok {
|
|
return responsex.Unauthorized(c, "登录已过期")
|
|
}
|
|
|
|
c.Locals(CtxUserIDKey, verifyToken.UserID)
|
|
|
|
return c.Next()
|
|
}
|
|
}
|
|
|
|
func GetUserID(c fiber.Ctx) (int64, error) {
|
|
v := c.Locals(CtxUserIDKey)
|
|
|
|
if v == nil {
|
|
return 0, responsex.Unauthorized(c, "登录已过期")
|
|
}
|
|
|
|
userID, ok := v.(int64)
|
|
|
|
if !ok {
|
|
return 0, responsex.Unauthorized(c, "登录已过期")
|
|
}
|
|
|
|
return userID, nil
|
|
}
|