# ai-test **Repository Path**: wwxtt/ai-test ## Basic Information - **Project Name**: ai-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-01 - **Last Updated**: 2025-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 用户中心系统 这是一个基于Go语言、Gin框架和PostgreSQL数据库开发的用户中心系统,支持多种认证方式,包括传统的用户名密码认证和OAuth2第三方认证(Google、GitHub、Facebook)。 ## 功能特性 - ✅ 用户注册与登录 - ✅ JWT令牌认证 - ✅ OAuth2第三方认证(Google、GitHub、Facebook) - ✅ 用户资料管理 - ✅ 密码修改 - ✅ 令牌刷新机制 - ✅ 会话管理 - ✅ 数据库自动迁移 - ✅ 环境变量配置 - ✅ 跨域支持 ## 技术栈 - **语言**: Go 1.20+ - **Web框架**: Gin - **数据库**: PostgreSQL - **ORM**: GORM - **认证**: JWT, OAuth2 - **配置管理**: Viper, godotenv ## 项目结构 ``` user-center/ ├── api/ # API路由 ├── config/ # 配置管理 ├── database/ # 数据库连接和迁移 ├── handlers/ # HTTP处理器 ├── middleware/ # 中间件 ├── models/ # 数据模型 ├── services/ # 业务逻辑 ├── utils/ # 工具函数 ├── .env # 环境变量 ├── .env.example # 环境变量示例 ├── build.sh # 构建脚本 ├── start.sh # 启动脚本 ├── main.go # 程序入口 ├── go.mod # Go模块文件 └── README.md # 项目说明 ``` ## 快速开始 ### 前置条件 - Go 1.20或更高版本 - PostgreSQL 14或更高版本 - 可选:OAuth2提供商的客户端ID和密钥(Google、GitHub、Facebook) ### 安装步骤 1. **克隆项目** ```bash git clone cd user-center ``` 2. **配置环境变量** 复制示例配置文件并根据需要修改: ```bash cp .env.example .env # 编辑.env文件,配置数据库连接和OAuth2凭据 ``` 3. **安装依赖** ```bash go mod tidy go mod download ``` 4. **运行项目** 使用启动脚本: ```bash ./start.sh ``` 或者直接运行: ```bash go run main.go ``` ### 构建项目 使用构建脚本构建多平台二进制文件: ```bash ./build.sh ``` 构建的二进制文件将位于`output/`目录中。 ## API端点 ### 健康检查 - `GET /health` - 检查服务是否正常运行 ### 认证相关 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/refresh` - 刷新访问令牌 - `POST /api/auth/logout` - 用户登出(需要认证) - `GET /api/auth/profile` - 获取用户资料(需要认证) - `PUT /api/auth/profile` - 更新用户资料(需要认证) - `POST /api/auth/change-password` - 修改密码(需要认证) ### OAuth2相关 - `GET /api/oauth2/:provider/auth` - 获取OAuth2授权URL - `GET /api/oauth2/:provider/callback` - OAuth2回调处理 ### 用户相关 - `GET /api/users/me` - 获取当前用户资料(需要认证) - `PUT /api/users/me` - 更新当前用户资料(需要认证) - `POST /api/users/me/change-password` - 修改密码(需要认证) ## 数据库迁移 系统在启动时会自动执行数据库迁移,创建必要的表结构。主要表包括: - `users` - 用户信息表 - `oauth2_credentials` - OAuth2凭据表 - `refresh_tokens` - 刷新令牌表 - `sessions` - 会话表 ## 环境变量配置 主要配置项: - `PORT` - 服务器端口 - `ENVIRONMENT` - 运行环境(development/production) - `DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASSWORD`, `DB_NAME` - 数据库连接信息 - `JWT_SECRET` - JWT签名密钥 - `JWT_EXPIRATION_HOURS` - JWT过期时间(小时) - `REFRESH_TOKEN_EXPIRATION_DAYS` - 刷新令牌过期时间(天) - `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` - Google OAuth2配置 - `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET` - GitHub OAuth2配置 - `FACEBOOK_CLIENT_ID`, `FACEBOOK_CLIENT_SECRET` - Facebook OAuth2配置 - `CALLBACK_URL` - OAuth2回调URL ## 安全提示 - 生产环境中务必修改`JWT_SECRET`为强密钥 - 妥善保管OAuth2客户端密钥 - 使用HTTPS保护生产环境中的API通信 - 定期更新依赖包以修复安全漏洞 ## 许可证 [MIT](LICENSE)