插件开发中的菜单权限坑:那些年我跳过的ACL大坑

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 33 浏览 3 回复

最近在给Discuz!插件加后台菜单时,又双叒叕被权限节点坑了。明明菜单注册代码写得飞起,前台就是不显示。排查半天才发现是权限节点声明漏了个下划线,记录下这些血泪教训:

1. 菜单注册时最容易被忽略的namespace问题。如果插件目录是abc_plugin,权限节点必须写成plugin/abc_plugin,少个斜杠直接GG。我在ThinkPHP插件里就因为这个熬夜到凌晨三点,死活调不出菜单。

2. 权限节点的命名规范比想象中严格。有次用驼峰命名写admin/pluginManage,结果权限系统直接不认。后来发现必须全小写加下划线,改成admin/plugin_manage才生效。

3. 多级菜单的权限陷阱。有次做了三级菜单,第二级能显示但第三级死活出不来。后来发现每级都要单独声明权限节点,光声明父级是不够的。现在我都习惯在插件安装时用脚本自动注册所有节点权限。

4. 最坑的是某些CMS的路由缓存。明明改了权限配置,刷新后还是旧版。后来学会在开发时直接关掉路由缓存,上线前再统一清理。有个项目因为这个被客户投诉了三次,说我们功能时有时无...

现在我的标准操作流程:写完菜单注册代码后,第一时间去数据库的auth_rule表里确认节点是否存在。你们还有哪些踩坑经历?欢迎在评论区补充~

评论3
回复 · 3
WadeWave
WadeWave 新手 · #3 ·
感谢分享!
马凯桂
马凯桂 初级 · #2 ·
学到了,顶一下
Theo
Theo 新手 · #1 ·
写得很清楚,收藏了
微信客服 微信客服