基于 Next.js 14 + TypeScript + Ant Design 的现代化企业级 CMS 管理系统,专注于后台管理功能。
- 🚀 Next.js 14 - 使用 App Router 的现代 React 框架
- 🎯 TypeScript - 完整的类型安全支持
- 🎨 Ant Design - 企业级 UI 设计语言
- 🌍 国际化 - 支持中英文切换
- 🔐 安全认证 - JWT + Redis 的安全认证系统
- 👥 权限管理 - 基于角色的权限控制系统 (RBAC)
- 📱 响应式设计 - 适配移动端和桌面端
- 🛡️ 安全加固 - 多层安全防护机制
- 📊 日志审计 - 完整的操作日志记录
- ☁️ 文件存储 - 阿里云 OSS 文件管理
- 🔧 现代工具链 - pnpm + Prisma + Redis
nextjs-cms-template/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/v1/ # API 路由
│ │ │ ├── auth/ # 认证相关接口
│ │ │ ├── accounts/ # 账户管理接口
│ │ │ ├── roles/ # 角色管理接口
│ │ │ ├── logs/ # 日志查询接口
│ │ │ └── upload/ # 文件上传接口
│ │ ├── dashboard/ # 仪表板页面
│ │ ├── login/ # 登录页面
│ │ ├── system/ # 系统管理
│ │ │ ├── accounts/ # 账户管理
│ │ │ └── roles/ # 角色管理
│ │ └── files/ # 文件管理
│ ├── components/ # 共享组件
│ │ ├── admin-layout.tsx # 管理后台布局
│ │ ├── permission.tsx # 权限控制组件
│ │ ├── search-user.tsx # 用户搜索组件
│ │ ├── upload-drawer.tsx # 文件上传抽屉
│ │ └── table-cell/ # 表格单元格组件
│ ├── lib/ # 核心库
│ │ ├── auth.ts # JWT 认证工具
│ │ ├── db.ts # 数据库连接
│ │ ├── redis.ts # Redis 连接
│ │ ├── oss.ts # 阿里云 OSS 配置
│ │ ├── security.ts # 安全工具库
│ │ └── middleware.ts # 中间件工具
│ ├── services/ # API 服务层
│ │ ├── auth.ts # 认证服务
│ │ ├── account.ts # 账户管理服务
│ │ ├── roles.ts # 角色管理服务
│ │ ├── logs.ts # 日志管理服务
│ │ └── common.ts # 通用服务
│ ├── types/ # TypeScript 类型定义
│ │ └── api.ts # API 类型定义
│ ├── locales/ # 国际化文件
│ │ ├── zh-CN/ # 中文语言包
│ │ └── en-US/ # 英文语言包
│ ├── store/ # Zustand 状态管理
│ └── const/ # 常量定义
├── prisma/ # 数据库相关
│ ├── schema.prisma # 数据库模型定义
│ └── seed.ts # 数据库种子数据
├── docs/ # 项目文档
│ ├── API_INTERFACES.md # API 接口文档
│ ├── SECURITY_HARDENING.md # 安全加固指南
│ └── DEPLOYMENT_SECURITY_CHECKLIST.md # 部署安全检查清单
├── middleware.ts # Next.js 中间件
├── next.config.js # Next.js 配置
└── package.json # 项目配置
- Node.js 18+
- pnpm 8+
- MySQL 8.0+
- Redis 6.0+
pnpm install
复制环境变量文件:
cp .env.example .env.local
配置必要的环境变量:
# 数据库配置
DATABASE_URL="mysql://username:password@localhost:3306/nextjs_cms"
# JWT 配置
JWT_SECRET="your-super-secret-jwt-key-256-bits-long"
# Redis 配置
REDIS_HOST="localhost"
REDIS_PORT="6379"
# 阿里云 OSS 配置
OSS_ACCESS_KEY_ID="your-access-key-id"
OSS_ACCESS_KEY_SECRET="your-access-key-secret"
OSS_BUCKET="your-bucket-name"
# 生成 Prisma 客户端
npx prisma generate
# 推送数据库结构
npx prisma db push
# 初始化种子数据
npx prisma db seed
pnpm dev
默认管理员账户:
- 用户名:
admin
- 密码:
admin123456
pnpm build
pnpm start
- 多因素认证 - 用户名+密码+验证码
- JWT 令牌 - 安全的身份验证机制
- 登录限制 - IP 和用户级别的登录尝试限制
- 会话管理 - 基于 Redis 的会话存储
- 安全日志 - 完整的认证事件记录
- 角色管理 - 灵活的角色定义和分配
- 权限控制 - 细粒度的权限管理
- RBAC 模型 - 基于角色的访问控制
- 权限验证 - 组件级和路由级权限控制
- 账户 CRUD - 完整的账户生命周期管理
- 状态控制 - 账户启用/禁用功能
- 密码策略 - 强密码要求和定期更换
- 批量操作 - 高效的批量管理功能
- 安全上传 - 文件类型和大小验证
- 云存储 - 阿里云 OSS 集成
- 访问控制 - 基于权限的文件访问
- 批量处理 - 文件批量上传和管理
- 操作日志 - 所有用户操作的完整记录
- 安全事件 - 安全相关事件的专门记录
- 日志查询 - 多维度的日志检索功能
- 审计报告 - 定期的安全审计报告
- 性能监控 - 系统性能指标监控
- 安全监控 - 异常行为检测和告警
- 健康检查 - 系统组件健康状态监控
- 告警机制 - 多渠道的告警通知
- ✅ JWT 令牌认证
- ✅ 刷新令牌机制
- ✅ 登录失败次数限制
- ✅ 验证码防暴力破解
- ✅ 会话超时管理
- ✅ 密码 bcrypt 加密
- ✅ 敏感数据脱敏
- ✅ SQL 注入防护
- ✅ XSS 攻击防护
- ✅ CSRF 攻击防护
- ✅ HTTPS 强制重定向
- ✅ 安全响应头配置
- ✅ CORS 跨域控制
- ✅ 速率限制
- ✅ IP 白名单
- ✅ 文件类型白名单
- ✅ 文件大小限制
- ✅ 文件名安全化
- ✅ 病毒扫描集成
- ✅ 访问权限控制
技术 | 版本 | 说明 |
---|---|---|
Next.js | 14.2.15 | React 全栈框架 |
React | 18.3.1 | UI 库 |
TypeScript | 5.x | 类型系统 |
Ant Design | 5.x | UI 组件库 |
Prisma | 6.x | ORM 数据库工具 |
Redis | 6.0+ | 缓存和会话存储 |
MySQL | 8.0+ | 关系型数据库 |
JWT | 9.x | 身份验证 |
bcryptjs | 3.x | 密码加密 |
Ali OSS | 6.x | 文件存储 |
-- 核心表结构
accounts -- 管理员账户表
roles -- 角色表
permissions -- 权限表
account_roles -- 账户角色关联表
role_permissions -- 角色权限关联表
logs -- 系统日志表
export_records -- 导出记录表
- RESTful API - 标准的 REST 接口设计
- 统一响应格式 - 标准化的数据返回格式
- 错误处理 - 完善的错误处理机制
- 分页支持 - 标准分页查询
- 版本控制 - API 版本管理
- ESLint - 代码质量检查
- Prettier - 代码格式化
- TypeScript - 严格类型检查
- 命名约定 - 统一的命名规范
- 需求分析 - 明确功能需求和技术方案
- 数据库设计 - 设计或更新数据库表结构
- API 开发 - 实现后端接口
- 前端开发 - 实现用户界面
- 测试验证 - 单元测试和集成测试
- 安全检查 - 安全漏洞扫描和修复
- 部署上线 - 生产环境部署
-
环境准备
# 安装 Node.js 18+ # 安装 MySQL 8.0+ # 安装 Redis 6.0+ # 配置反向代理 (Nginx)
-
应用部署
# 克隆代码 git clone <repository-url> cd nextjs-cms-template # 安装依赖 pnpm install # 配置环境变量 cp .env.example .env.production # 数据库初始化 npx prisma generate npx prisma db push npx prisma db seed # 构建应用 pnpm build # 启动应用 pnpm start
-
安全配置
- 参考 部署安全检查清单
- 配置 HTTPS 证书
- 设置防火墙规则
- 配置监控告警
欢迎提交 Issue 和 Pull Request 来改进项目。
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如果您在使用过程中遇到问题,可以通过以下方式获取帮助:
- 查看项目文档
- 提交 GitHub Issue
- 联系维护团队
最后更新: 2024年12月24日