From 23c5dfcc282a5dd1566604dd6f341b1e1cfa8821 Mon Sep 17 00:00:00 2001 From: chang Date: Thu, 24 Apr 2025 00:37:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E3=80=81=E7=BC=96=E8=BE=91=E5=92=8C=E5=88=A0?= =?UTF-8?q?=E9=99=A4API=E4=B8=AD=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C=E5=92=8C?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=A8=B3=E5=AE=9A=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursor/rules/coding-standards.mdc | 52 +++++++++++++++++++++++++++++ .cursor/rules/project-structure.mdc | 45 +++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 .cursor/rules/coding-standards.mdc create mode 100644 .cursor/rules/project-structure.mdc diff --git a/.cursor/rules/coding-standards.mdc b/.cursor/rules/coding-standards.mdc new file mode 100644 index 0000000..caf7182 --- /dev/null +++ b/.cursor/rules/coding-standards.mdc @@ -0,0 +1,52 @@ +--- +description: +globs: +alwaysApply: false +--- +# 代码规范和最佳实践 + +## Go 编码规范 + +### 命名约定 +- 使用驼峰命名法 +- 包名使用小写 +- 导出的标识符必须以大写字母开头 +- 接口名通常以 -er 结尾,如 `Handler`、`Service` 等 + +### 错误处理 +- 始终检查错误返回值 +- 使用有意义的错误消息 +- 在适当的抽象层处理错误 + +### 项目特定规范 + +#### Handler 层 +参考 [handlers/admin_handler.go](mdc:handlers/admin_handler.go): +- Handler 结构体应包含所需的服务依赖 +- 使用依赖注入模式初始化 Handler +- HTTP 响应应使用适当的状态码 +- 统一使用 gin.H 作为模板数据传递 + +#### Service 层 +- 实现核心业务逻辑 +- 保持服务方法的单一职责 +- 避免在服务层处理 HTTP 相关逻辑 + +#### 中间件 +- 保持中间件的通用性和可重用性 +- 明确记录中间件的用途和影响 +- 合理使用中间件链 + +### 测试规范 +- 为所有关键功能编写单元测试 +- 使用表驱动测试方法 +- 测试文件命名为 `xxx_test.go` +- 确保测试覆盖主要的成功和失败场景 + +### 安全最佳实践 +- 所有用户输入必须经过验证 +- 密码必须加密存储 +- 使用 HTTPS +- 实现适当的访问控制 +- 遵循 OAuth2 和 OIDC 规范的安全建议 + diff --git a/.cursor/rules/project-structure.mdc b/.cursor/rules/project-structure.mdc new file mode 100644 index 0000000..170a68b --- /dev/null +++ b/.cursor/rules/project-structure.mdc @@ -0,0 +1,45 @@ +--- +description: +globs: +alwaysApply: false +--- +# OIDC/OAuth2 服务器项目结构 + +这是一个基于 Go 语言实现的 OIDC/OAuth2 认证服务器。 + +## 核心组件 + +### 主要入口 +- [main.go](mdc:main.go) - 应用程序的主入口点,负责初始化和启动服务器 + +### 关键目录 +- **handlers/** - HTTP 请求处理器 + - [handlers/admin_handler.go](mdc:handlers/admin_handler.go) - 管理员相关功能处理 +- **services/** - 业务逻辑层 +- **models/** - 数据模型定义 +- **middleware/** - HTTP 中间件 +- **config/** - 配置文件 +- **templates/** - HTML 模板文件 +- **utils/** - 通用工具函数 + +## 主要功能模块 + +### 管理员功能 +管理员模块提供以下功能: +- 用户管理(创建、编辑、删除、列表) +- 客户端应用管理 +- 管理员登录认证 + +### 认证流程 +实现了标准的 OAuth2 和 OpenID Connect 认证流程: +- 授权码模式 +- 密码模式 +- 客户端凭证模式 +- 隐式授权模式 + +## 开发指南 +- 新增 API 端点应在 handlers/ 目录下创建对应的处理器 +- 业务逻辑应放在 services/ 目录下 +- 所有数据库模型定义应放在 models/ 目录下 +- 通用的中间件应放在 middleware/ 目录下 +