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

6.5 KiB
Executable File
Raw Blame History

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。

快速安装

# 克隆项目
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/.htaccessNginx 用户需自行配置 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 复制):

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.phpview/ 模板
  2. addons 配置和数据库表中注册

注意事项

  • 勿删 install.lock — 它是安装锁文件,防止重复安装
  • 勿提交 .env — 已在 .gitignore 中忽略
  • composer.lock 已忽略 — 每次需 composer install 重新生成
  • runtime/public/uploads/ 目录需可写权限
  • 前台模板在 public/template/ 而非 view/view/ 仅存放后台模板)
  • 内容模型控制器是虚拟的,所有路由映射到 Content 控制器

在线预览

版本历史

许可证

Apache-2.0