# 风铃认证中心 - 管理端开发完成 ## 项目概述 本项目为风铃认证中心提供完整的 Web 管理界面和后端 API。 ## 技术栈 ### 前端 - Vue 3 + TypeScript - Vite - Element Plus UI 框架 - Pinia 状态管理 - Vue Router 路由 - Axios HTTP 客户端 ### 后端 - ASP.NET Core 10.0 - Entity Framework Core 10.0 - PostgreSQL 数据库 - OpenIddict OAuth2/OIDC 服务 - Serilog 日志 - OpenTelemetry 可观测性 ## 完成的功能 ### 前端页面 #### 1. 仪表盘(Dashboard) - 统计卡片:用户数、租户数、OAuth应用数、今日访问 - 最近活动时间线 - 系统信息展示 - 位置:`src/views/Dashboard/Dashboard.vue` #### 2. 用户管理 - 用户列表(分页、搜索) - 添加/编辑用户 - 角色分配 - 重置密码 - 删除用户 - 位置:`src/views/Users/UserList.vue` #### 3. 角色管理 - 角色列表(分页、搜索) - 添加/编辑角色 - 权限配置 - 查看角色用户 - 移除用户角色 - 位置:`src/views/Users/RoleList.vue` #### 4. 租户管理 - 租户列表(分页、搜索) - 添加/编辑租户 - 租户设置(注册限制、密码策略、会话超时) - 查看租户用户和角色 - 位置:`src/views/Users/TenantList.vue` #### 5. OAuth 应用管理 - 应用列表(分页、搜索) - 添加/编辑应用 - 完整配置(重定向URI、授权类型、权限范围等) - 查看密钥 - 位置:`src/views/OAuth/ClientList.vue` #### 6. 访问日志 - 日志列表(多条件筛选) - 日志详情查看 - 导出 CSV - 位置:`src/views/Audit/AccessLog.vue` #### 7. 审计日志 - 日志列表(多条件筛选) - 日志详情查看(包含变更前/后数据) - 导出 CSV - 位置:`src/views/Audit/AuditLog.vue` ### 后端 API #### 控制器 1. **AuthController** - 认证端点 - POST /connect/token - 登录(密码模式) - POST /connect/token/refresh - 刷新令牌 - POST /connect/revoke - 撤销令牌 2. **UsersController** - 用户管理 - GET /api/users - 获取用户列表(分页、搜索) - GET /api/users/{id} - 获取单个用户 - POST /api/users - 创建用户 - PUT /api/users/{id} - 更新用户 - PUT /api/users/{id}/password - 重置密码 - DELETE /api/users/{id} - 删除用户 3. **RolesController** - 角色管理 - GET /api/roles - 获取角色列表(分页、搜索) - GET /api/roles/{id} - 获取单个角色 - GET /api/roles/{id}/users - 获取角色用户 - POST /api/roles - 创建角色 - PUT /api/roles/{id} - 更新角色 - DELETE /api/roles/{id} - 删除角色 - DELETE /api/roles/{id}/users/{userId} - 移除用户角色 4. **TenantsController** - 租户管理 - GET /api/tenants - 获取租户列表(分页、搜索) - GET /api/tenants/{id} - 获取单个租户 - GET /api/tenants/{tenantId}/users - 获取租户用户 - GET /api/tenants/{tenantId}/roles - 获取租户角色 - GET /api/tenants/{tenantId}/settings - 获取租户设置 - PUT /api/tenants/{tenantId}/settings - 更新租户设置 - POST /api/tenants - 创建租户 - PUT /api/tenants/{id} - 更新租户 - DELETE /api/tenants/{id} - 删除租户 5. **OAuthClientsController** - OAuth 应用管理 - GET /api/oauthclients - 获取应用列表(分页、搜索) - GET /api/oauthclients/{id} - 获取单个应用 - GET /api/oauthclients/{id}/secret - 获取应用密钥 - POST /api/oauthclients - 创建应用 - PUT /api/oauthclients/{id} - 更新应用 - DELETE /api/oauthclients/{id} - 删除应用 6. **AccessLogsController** - 访问日志 - GET /api/access-logs - 获取日志列表(分页、筛选) - GET /api/access-logs/export - 导出 CSV 7. **AuditLogsController** - 审计日志 - GET /api/audit-logs - 获取日志列表(分页、筛选) - GET /api/audit-logs/export - 导出 CSV 8. **StatsController** - 统计数据 - GET /api/stats/dashboard - 仪表盘统计数据 - GET /api/stats/system - 系统统计信息 9. **HealthCheckController** - 健康检查 - GET /health - 健康检查端点 ### 数据模型 #### 核心模型 1. **ApplicationUser** - 用户 - 继承自 IdentityUser - RealName, Phone, TenantId, CreatedTime, UpdatedTime, IsDeleted 2. **ApplicationRole** - 角色 - 继承自 IdentityRole - Description, DisplayName, TenantId, IsSystem, Permissions, CreatedTime 3. **Tenant** - 租户 - Id, TenantId, Name, ContactName, ContactEmail, ContactPhone - MaxUsers, Description, Status, ExpiresAt, CreatedAt, UpdatedAt, IsDeleted 4. **OAuthApplication** - OAuth 应用 - Id, ClientId, ClientSecret, DisplayName - RedirectUris, PostLogoutRedirectUris, Scopes, GrantTypes - ClientType, ConsentType, Status, Description, CreatedAt, UpdatedAt 5. **AccessLog** - 访问日志 - UserName, TenantId, Action, Resource, Method, IpAddress - UserAgent, Status, Duration, RequestData, ResponseData, ErrorMessage - CreatedAt 6. **AuditLog** - 审计日志 - Operator, TenantId, Operation, Action - TargetType, TargetId, TargetName, IpAddress, Description - OldValue, NewValue, ErrorMessage, Status, CreatedAt ### 数据库配置 - **数据库类型**: PostgreSQL - **连接字符串**: `Host=192.168.100.10;Port=5432;Database=fengling_auth;Username=movingsam;Password=sl52788542` - **迁移**: - InitialCreate - 初始化表结构 - AddOAuthApplications - 添加 OAuth 应用表 - AddTenantAndLogs - 添加租户和日志表 - AddOAuthDescription - 添加 OAuth 描述字段 ### 初始数据 SeedData 初始化以下数据: #### 默认租户 - TenantId: default - Name: 默认租户 - MaxUsers: 1000 #### 系统角色 1. **Admin** - 管理员 - 所有权限 - IsSystem: true 2. **User** - 普通用户 - user.view 权限 - IsSystem: true #### 默认用户 1. **admin** - 密码: Admin@123 - 角色: Admin 2. **testuser** - 密码: Test@123 - 角色: User #### OAuth 应用 - **fengling-console** - 风铃运管中心 - ClientSecret: console-secret-change-in-production - 授权类型: authorization_code, refresh_token ## 运行说明 ### 后端(AuthService) ```bash cd src/Fengling.AuthService dotnet build dotnet run ``` 服务地址: http://localhost:5000 API 文档: http://localhost:5000/swagger 健康检查: http://localhost:5000/health ### 前端(Console.Web) ```bash cd src/Fengling.Console.Web npm install npm run dev ``` 开发地址: http://localhost:5173 生产构建: ```bash npm run build ``` ## API 代理配置 Vite 开发服务器配置了 API 代理: - `/api/auth/*` → `http://localhost:5000` (AuthService) - `/api/gateway/*` → `http://localhost:5001` (YarpGateway) ## 默认登录 - 用户名: admin - 密码: Admin@123 ## 文件结构 ``` Fengling.Refactory.Buiding/ ├── src/ │ ├── Fengling.AuthService/ # 后端认证服务 │ │ ├── Controllers/ # API 控制器 │ │ ├── Data/ # 数据库上下文和种子数据 │ │ ├── Models/ # 数据模型 │ │ ├── Configuration/ # 配置类 │ │ └── Migrations/ # 数据库迁移 │ │ │ └── Fengling.Console.Web/ # 前端管理界面 │ ├── src/ │ │ ├── api/ # API 调用封装 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── router/ # Vue Router 路由 │ │ └── views/ # 页面组件 │ │ ├── Auth/ # 认证页面 │ │ ├── Dashboard/ # 仪表盘 │ │ ├── Users/ # 用户/角色/租户管理 │ │ ├── OAuth/ # OAuth 应用管理 │ │ └── Audit/ # 日志管理 │ └── dist/ # 生产构建输出 │ └── docs/ # 项目文档 ``` ## 安全建议 1. **生产环境修改**: - 更改默认管理员密码 - 修改 OAuth 应用密钥 - 配置 HTTPS - 限制数据库访问 2. **密码策略**: - 至少 8 位 - 包含字母和数字 - 可根据租户设置自定义策略 ## 后续优化建议 1. **前端**: - 添加更多图表可视化 - 实现前端国际化 - 添加单元测试 2. **后端**: - 添加 API 限流 - 实现缓存策略 - 添加更多日志级别 - 完善错误处理 3. **功能**: - OAuth 授权码流程完善 - 双因素认证(2FA) - 用户自助服务(找回密码、注册) - API 权限细粒度控制 ## 版本信息 - 前端版本: v1.0.0 - 后端版本: v1.0.0 - .NET 版本: 10.0.2 - Node.js 版本: 推荐 18+