Files
learn-golang/Web开发/06go-auth-api/main.go
liumangmang b010f82221 feat(auth): 添加完整的用户认证API项目
- 实现用户注册、登录、JWT令牌认证功能
- 集成Gin、GORM、Viper、Zap等框架
- 添加密码加密、数据库操作、中间件等完整功能
- 配置多环境支持、日志轮转、CORS处理
- 创建完整的项目结构和配置文件体系
2025-12-30 18:00:42 +08:00

67 lines
1.1 KiB
Go

package main
import (
"fmt"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
func main() {
//加载配置
cfg, err := LoadConfig()
if err != nil {
panic(err)
}
//初始化日志
err = InitLogger(cfg.App.Env)
if err != nil {
panic(err)
}
defer Logger.Sync()
//初始化数据库
err = InitDB(cfg)
if err != nil {
Logger.Fatal("数据库初始化失败", zap.Error(err))
}
//创建Gin应用
r := gin.Default()
//中间件
r.Use(LoggingMiddleware())
r.Use(CORSMiddleware())
// 公开路由
public := r.Group("/api")
{
public.GET("/health", HealthCheck)
public.POST("/register", Register(cfg))
public.POST("/login", Login(cfg))
}
// 受保护的路由
protected := r.Group("/api")
protected.Use(AuthMiddleware(cfg))
{
protected.GET("/profile", GetProfile)
protected.PUT("/profile", UpdateProfile)
}
// 启动服务器
addr := fmt.Sprintf(":%d", cfg.App.Port)
Logger.Info("Server starting",
zap.String("app", cfg.App.Name),
zap.Int("port", cfg.App.Port),
zap.String("env", cfg.App.Env),
)
if err = r.Run(addr); err != nil {
Logger.Fatal("Server error", zap.Error(err))
}
}