package middleware import ( "strings" "gitee.ltd/lxh/wechat-robot/internal/config" "github.com/gofiber/fiber/v2" ) // IsAuthenticated // @description: 检查用户是否已登录 // @param c // @return bool func IsAuthenticated(c *fiber.Ctx) bool { token := c.Cookies("auth_token") if token == "" { return false } // 加载配置 cfg, err := config.Load() if err != nil { return false } // 根据认证类型验证 switch cfg.Auth.Type { case "password": // 对比token (简单实现,实际应用可能需要更复杂的验证) return token == cfg.Auth.Password.SecretKey case "logto": // 如果是Logto认证方式,检查token前缀,有前缀则认为已登录 return strings.HasPrefix(token, "logto:") default: return false } } // Authenticate // @description: 创建身份验证中间件 // @return fiber.Handler func Authenticate() fiber.Handler { return func(c *fiber.Ctx) error { // 检查是否已登录 if !IsAuthenticated(c) { return c.Redirect("/login") } return c.Next() } }