Files
sentcms/README.md
T
2026-04-22 19:31:54 +08:00

174 lines
6.5 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SentCMS
SentCMS 是基于 **ThinkPHP 6.x** 的内容管理系统,采用单应用架构,通过控制器命名空间划分四个模块:后台管理(admin)、前台展示(front)、用户中心(user)、API接口(api)。
> 由南昌腾速科技有限公司开发维护,遵循 Apache-2.0 开源协议。
## 环境要求
| 依赖 | 版本 |
|------|------|
| PHP | >= 7.1 |
| MySQL | 5.5+ |
| 扩展 | pdo_mysql, mbstring, json, openssl, tokenizer |
生产环境推荐:Linux + Nginx + PHP-FPM + MySQL。
## 快速安装
```bash
# 克隆项目
git clone https://gitee.com/sentcms/sentcms.git sentcms
cd sentcms
# 安装依赖
composer install
# 配置环境变量
cp .example.env .env
# 编辑 .env 文件,填写数据库连接信息
```
将网站根目录指向 `public/`,然后访问 `http://你的域名/install.php` 完成安装。
> **URL 伪静态必须开启**,否则路由无法正常工作。Apache 用户使用 `public/.htaccess`Nginx 用户需自行配置 rewrite 规则。
## 目录结构
```
├─ addons/ 扩展插件目录
├─ app/ 应用核心代码
│ ├─ controller/ 控制器
│ │ ├─ admin/ 后台管理控制器(权限控制、RBAC)
│ │ ├─ api/ API 接口控制器(JWT 认证)
│ │ ├─ front/ 前台展示控制器(公开访问)
│ │ └─ user/ 用户中心控制器(Session 认证)
│ ├─ http/ HTTP 服务层
│ │ ├─ form/ 自定义表单引擎
│ │ ├─ middleware/ 中间件(Admin, Api, ApiAuth, Validate
│ │ └─ validate/ 自动验证器
│ ├─ model/ 数据模型(按业务域分目录)
│ ├─ services/ 业务逻辑服务层
│ └─ common.php 全局辅助函数
├─ config/ 应用配置文件
├─ extend/ 自定义类库
│ ├─ com/ Database, Datatable, Sent 标签库, Version
│ └─ doc/ 文档注释解析器
├─ public/ 网站根目录(对外访问)
│ ├─ static/ 静态资源(CSS/JS/图片/插件)
│ ├─ template/ 前台主题模板目录
│ ├─ uploads/ 上传文件目录
│ ├─ index.php 入口文件
│ └─ install.php 安装向导
├─ route/
│ └─ app.php 路由定义(含动态内容模型路由)
├─ view/ 后台视图模板
│ └─ admin/ 后台管理界面模板
├─ runtime/ 运行时目录(缓存/日志/会话/备份)
├─ .example.env 环境配置模板
└─ composer.json Composer 依赖配置
```
## 核心特性
- **单应用架构** — 四个模块通过控制器命名空间 `app\controller\{admin,front,user,api}` 划分,非 ThinkPHP 多应用模式
- **动态内容模型** — 通过后台创建内容模型,自动注册路由,所有内容类型共用 `Content` 控制器
- **RBAC 权限系统** — 基于节点的权限控制,权限细化到按钮级别,支持超级管理员(`rootuid` 配置)
- **JWT API 认证** — API 模块使用 JWT Token 认证,支持跨域访问
- **插件系统** — 通过 `addons/` 目录扩展功能,支持钩子事件机制
- **自定义表单引擎** — `app/http/form/` 提供灵活的表单构建能力
- **多主题支持** — 前台模板位于 `public/template/`,支持 PC/移动端主题自动切换
- **自定义标签库** — `com\Sent` ThinkPHP 标签库,预加载到模板引擎
## 认证机制
| 模块 | 认证方式 | 说明 |
|------|---------|------|
| admin | Session + RBAC | `Admin` 中间件,Session 存储于 `adminInfo`,权限通过 `sent\auth\Auth` 校验 |
| api | JWT Token | `ApiAuth` 中间件,Token 过期返回 code 2001,无效返回 code 2000 |
| user | Session | `user\Base::initialize()` 中检查登录状态,未登录重定向至登录页 |
| front | 无 | 公开访问 |
## 环境变量说明
编辑 `.env` 文件(从 `.example.env` 复制):
```ini
APP_DEBUG = false # 调试模式
VERSION = 4.0.5 # 版本号(后台展示)
rootuid = 1 # 超级管理员用户 ID
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = your_database
USERNAME = root
PASSWORD = your_password
HOSTPORT = 3306
CHARSET = utf8
PREFIX = sent_ # 表前缀
[JWT]
SECRET = your_jwt_secret # JWT 签名密钥
```
## 主要依赖
| 包名 | 用途 |
|------|------|
| topthink/framework ^6.0 | ThinkPHP 核心框架 |
| sent/think-auth ^1.2 | RBAC 权限管理 |
| sent/think-jwt ^1.0 | JWT 认证 |
| sent/think-addons ^1.0 | 插件系统 |
| overtrue/wechat ^4.2 | 微信 SDK |
| topthink/think-captcha ^3.0 | 验证码 |
| liliuwei/thinkphp-jump ^1.4 | 控制器跳转 trait |
## 开发指南
### 新增后台控制器
1. 创建 `app/controller/admin/{Name}.php`,继承 `app\controller\admin\Base`
2. 创建对应视图目录 `view/admin/{name}/`
3. 路由自动匹配:`admin/{name}/{action}`
4.`auth_menu` 数据表中添加菜单项
### 新增 API 接口
1.`app/controller/api/{Name}.php` 中添加方法,继承 `app\controller\api\Base`
2. 路由自动匹配:`api/{name}/{action}`
3. 默认启用 JWT 认证(`login`/`register` 除外)
### 新增内容模型
通过后台管理界面创建 → 系统自动注册动态路由。内容模型统一映射到 `Content` 控制器处理。
### 新增插件
1. 创建 `addons/{name}/` 目录,包含 `controller/Admin.php``view/` 模板
2.`addons` 配置和数据库表中注册
## 注意事项
- **勿删** `install.lock` — 它是安装锁文件,防止重复安装
- **勿提交** `.env` — 已在 `.gitignore` 中忽略
- `composer.lock` 已忽略 — 每次需 `composer install` 重新生成
- `runtime/``public/uploads/` 目录需可写权限
- 前台模板在 `public/template/` 而非 `view/``view/` 仅存放后台模板)
- 内容模型控制器是虚拟的,所有路由映射到 `Content` 控制器
## 在线预览
- 演示地址:http://www.sentcms.com/
- 账号:admin / admin888(请勿修改密码或删除数据)
- 交流社区:http://bbs.sentcms.com
## 版本历史
- **4.x**(当前):https://gitee.com/sentcms/sentcms — 基于 ThinkPHP 6.x
- **3.x**:历史版本,基于 ThinkPHP 3.x/5.x
## 许可证
[Apache-2.0](LICENSE.txt)