8.6 KiB
8.6 KiB
风铃认证中心 - 管理端开发完成
项目概述
本项目为风铃认证中心提供完整的 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
控制器
-
AuthController - 认证端点
- POST /connect/token - 登录(密码模式)
- POST /connect/token/refresh - 刷新令牌
- POST /connect/revoke - 撤销令牌
-
UsersController - 用户管理
- GET /api/users - 获取用户列表(分页、搜索)
- GET /api/users/{id} - 获取单个用户
- POST /api/users - 创建用户
- PUT /api/users/{id} - 更新用户
- PUT /api/users/{id}/password - 重置密码
- DELETE /api/users/{id} - 删除用户
-
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} - 移除用户角色
-
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} - 删除租户
-
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} - 删除应用
-
AccessLogsController - 访问日志
- GET /api/access-logs - 获取日志列表(分页、筛选)
- GET /api/access-logs/export - 导出 CSV
-
AuditLogsController - 审计日志
- GET /api/audit-logs - 获取日志列表(分页、筛选)
- GET /api/audit-logs/export - 导出 CSV
-
StatsController - 统计数据
- GET /api/stats/dashboard - 仪表盘统计数据
- GET /api/stats/system - 系统统计信息
-
HealthCheckController - 健康检查
- GET /health - 健康检查端点
数据模型
核心模型
-
ApplicationUser - 用户
- 继承自 IdentityUser
- RealName, Phone, TenantId, CreatedTime, UpdatedTime, IsDeleted
-
ApplicationRole - 角色
- 继承自 IdentityRole
- Description, DisplayName, TenantId, IsSystem, Permissions, CreatedTime
-
Tenant - 租户
- Id, TenantId, Name, ContactName, ContactEmail, ContactPhone
- MaxUsers, Description, Status, ExpiresAt, CreatedAt, UpdatedAt, IsDeleted
-
OAuthApplication - OAuth 应用
- Id, ClientId, ClientSecret, DisplayName
- RedirectUris, PostLogoutRedirectUris, Scopes, GrantTypes
- ClientType, ConsentType, Status, Description, CreatedAt, UpdatedAt
-
AccessLog - 访问日志
- UserName, TenantId, Action, Resource, Method, IpAddress
- UserAgent, Status, Duration, RequestData, ResponseData, ErrorMessage
- CreatedAt
-
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
系统角色
-
Admin - 管理员
- 所有权限
- IsSystem: true
-
User - 普通用户
- user.view 权限
- IsSystem: true
默认用户
-
admin
- 密码: Admin@123
- 角色: Admin
-
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/ # 项目文档
安全建议
-
生产环境修改:
- 更改默认管理员密码
- 修改 OAuth 应用密钥
- 配置 HTTPS
- 限制数据库访问
-
密码策略:
- 至少 8 位
- 包含字母和数字
- 可根据租户设置自定义策略
后续优化建议
-
前端:
- 添加更多图表可视化
- 实现前端国际化
- 添加单元测试
-
后端:
- 添加 API 限流
- 实现缓存策略
- 添加更多日志级别
- 完善错误处理
-
功能:
- OAuth 授权码流程完善
- 双因素认证(2FA)
- 用户自助服务(找回密码、注册)
- API 权限细粒度控制
版本信息
- 前端版本: v1.0.0
- 后端版本: v1.0.0
- .NET 版本: 10.0.2
- Node.js 版本: 推荐 18+