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

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

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

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

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

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

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

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

评论26
回复 · 26
何宁敏
何宁敏 初级赤羽栖云 · #20 ·
学到了,顶一下
晚风里的柚子
晚风里的柚子 初级虹翼巡游 · #19 ·
同求,期待更新
孙超宁
孙超宁 新手暖弦漫旋 · #18 ·
支持了~
自由的海盐
自由的海盐 初级心屿荧途 · #17 ·
写得很清楚,收藏了
张雪博
张雪博 新手 · #16 ·
已解决,谢谢楼主
徐超悦
徐超悦 初级赏金猎人 · #15 ·
感谢分享!
Zane
Zane 初级 · #14 ·
已解决,谢谢楼主
IvySky
IvySky 初级 · #13 ·
已解决,谢谢楼主
晚风里的月亮
晚风里的月亮 初级圣羽星庭 · #12 ·
支持了~
蔡伟
蔡伟 初级清瑶问鼎 · #11 ·
支持了~
XenaWave
XenaWave 新手漫步繁花 · #10 ·
写得很清楚,收藏了
赵娟静
赵娟静 初级璃梦花海 · #9 ·
写得很清楚,收藏了
Ivy
Ivy 初级 · #8 ·
感谢分享!
刘涛桂
刘涛桂 初级清瑶问鼎 · #7 ·
写得很清楚,收藏了
Eden
Eden 初级 · #6 ·
学到了,顶一下
郭平
郭平 新手赏金猎人 · #5 ·
写得很清楚,收藏了
Ella
Ella 初级圣羽星庭 · #4 ·
同求,期待更新
小北
小北 新手圣羽星庭 · #3 ·
支持了~
安静的橙子
安静的橙子 初级赏金猎人 · #2 ·
写得很清楚,收藏了
温柔的白云
温柔的白云 初级漫步繁花 · #1 ·
已解决,谢谢楼主
1 2
微信客服 微信客服 QQ官方交流群 QQ官方交流群