package routes import ( "log" "testfb/utils" "github.com/gofiber/fiber/v2" ) // 注册路由 func SetupRoutes(app *fiber.App) { app.Post("/login", login) } // 处理登录 func login(c *fiber.Ctx) error { //请求参数是JSON格式,解析JSON数据 var data map[string]string if err := c.BodyParser(&data); err != nil { log.Println(err) return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ "message": "Invalid request", }) } //把JSON数据中的用户名和密码取出来 if data["username"] == "" || data["password"] == "" { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{ "message": "Invalid request", }) } username := data["username"] password := data["password"] log.Printf("Login request for user: %s", username) log.Printf("Password: %s", password) //验证用户名和密码 if utils.ValiddateUser(username, password) { token, err := utils.GenerateJWT(username) if err != nil { log.Println(err) return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ "message": "Cannot get token, Internal server error", }) } log.Println("Token generated for user:", username) return c.Status(fiber.StatusOK).JSON(fiber.Map{ "token": token, }) } log.Printf("Invalid username or password for user: %s", username) return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ "message": "Invalid username or password", }) } // 得到用户信息。GET /userInfo // 验证token。GET /validateToken func userInfo(c *fiber.Ctx) error { // 从请求头中获取token token := c.Get("Authorization") if token == "" { return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ "message": "Unauthorized", }) } // 验证token username, err := utils.ValidateToken(token) if err != nil { log.Println(err) return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ "message": "Unauthorized", }) } // 得到用户信息 user, err := utils.GetUser(username) if err != nil { log.Println(err) return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ "message": "Internal server error", }) } return c.Status(fiber.StatusOK).JSON(user) }