ThinkPHP6的后台后台管理系统,说到底是管理把“增删改查”四个字做到极致。我见过不少团队用官方自带的系统admin应用起步,结果半年后代码乱成一锅粥——权限写死在控制器里,后台菜单硬编码在模板中,管理日志只记了个登录时间。系统问题不在框架,后台在于一开始就没想清楚后台到底要什么。管理
先聊路由。系统TP6默认走单应用模式,后台但后台通常需要独立入口。管理我的系统做法是建两个应用:index和admin,用多应用模式部署。后台admin目录下再分controller、管理model、系统view三层,别急着上service层,小项目扛不住那种抽象成本。中间件用来做登录态校验,
app\admin\middleware\Auth里检查session,没登录直接重定向到登录页。注意别把权限判断塞进中间件,那玩意儿该在控制器里显式调用。数据库设计有个坑:很多人把管理员和角色混在一张表。我建议拆成三张——admin、role、auth_rule。admin表存账号密码,role表存角色名和状态,auth_rule存具体权限节点。中间用admin_role和role_rule两张关联表连接。这样改权限时不用动用户数据,加角色也不用改代码。字段类型别用enum,用tinyint存状态,0禁用1启用,迁移到其他数据库时少些麻烦。
权限验证这块,TP6的
think\facade\Auth其实够用,但官方文档写得含糊。我的写法是在基类控制器里注入当前管理员信息,然后每个方法开头调$this->checkAuth('admin/user/edit')。checkAuth内部查auth_rule表,看当前角色有没有这个节点。节点名用“模块/控制器/方法”格式,跟路由对得上。超管直接跳过验证,别搞什么超级权限节点,简单点。模板渲染用Think模板引擎就行,别折腾前后端分离。后台页面交互不复杂,layui或bootstrap搭个框架,表格用
{ volist}循环输出。分页调$list->render(),样式丑但能用。表单提交记得加token验证,TP6的__token__自动生成,控制器里用token_check()校验。文件上传单独写个方法,限制后缀和大小,存到public/uploads下按日期分目录。日志系统容易被忽略。TP6自带Log类,但默认只记错误。后台操作日志得自己写,在基类控制器里加个
writeLog()方法,记录管理员ID、操作节点、请求参数和IP。表结构简单点:id、admin_id、rule_name、params、ip、create_time。params字段用json存,别序列化,查起来方便。日志表按月分表,不然半年后查询慢得你想哭。缓存用Redis,别用文件缓存。后台菜单和权限节点变动不频繁,登录时查一次存Redis,有效期设两小时。管理员改权限后手动清缓存,别搞自动刷新,容易出并发问题。TP6的Cache类支持tags,按角色ID打标签,清除时精准些。
最后说部署。Nginx配置里把admin目录设为独立站点,绑定二级域名。伪静态规则用
try_files,别用rewrite,TP6的pathinfo模式对rewrite敏感。PHP版本选7.4,8.0以上有些扩展不兼容。opcache开启,但别设validate_timestamps=0,开发时改代码不生效会疯掉。这套方案不高级,但胜在稳。我见过用TP6做后台撑住日均十万PV的,也见过堆了一堆设计模式结果连登录都卡死的。后台系统的核心是可靠,不是炫技。把增删改查做扎实,权限日志做清楚,剩下的交给业务去长。
顶: 3踩: 91






评论专区