fengling-console/CONSOLE_DEVELOPMENT.md
2026-02-03 15:30:12 +08:00

8.6 KiB
Raw Blame History

风铃认证中心 - 管理端开发完成

项目概述

本项目为风铃认证中心提供完整的 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

cd src/Fengling.AuthService
dotnet build
dotnet run

服务地址: http://localhost:5000 API 文档: http://localhost:5000/swagger 健康检查: http://localhost:5000/health

前端Console.Web

cd src/Fengling.Console.Web
npm install
npm run dev

开发地址: http://localhost:5173

生产构建:

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+