众力资讯网

PHP权限系统设计为什么越改越复杂 最近接手一个企业后台权限问题,管理员反馈一个

PHP权限系统设计为什么越改越复杂
最近接手一个企业后台权限问题,管理员反馈一个现象:明明已经给员工开通了某个功能权限,但登录后还是看不到菜单;有些账号之前能操作,调整岗位以后又突然无法访问。单看代码,每个接口都有权限判断,看起来没有明显问题,但实际使用过程中越来越难维护。

继续排查后发现,原来的权限设计经历过多次修改。最开始只有管理员和普通员工两个角色,后来增加部门负责人、销售、财务、运营等岗位,每增加一个特殊需求,就直接在代码里增加判断。例如某个页面允许 A 角色访问,另一个接口又额外判断用户部门,时间久了以后,权限规则散落在菜单、页面、接口多个地方。

后来重新整理权限结构,把用户、角色、权限三个关系拆开。用户只绑定角色,角色负责拥有权限,具体页面和接口统一绑定权限标识。新增岗位时只需要调整角色配置,不需要修改大量业务代码。同时把菜单权限和接口权限分开管理,避免出现“能看到菜单但是接口没有权限”或者“接口能调用但是页面没有入口”的情况。

企业后台的权限系统最容易出现的问题,不是功能做不出来,而是前期没有考虑后续变化。刚开始只有几个账号时,简单判断完全够用,但随着人员增加、业务调整、部门变化,原来的写法会越来越难改。

做管理系统时,我现在会尽量提前设计权限边界。哪些是角色控制,哪些是数据范围控制,哪些是操作权限控制,都应该提前区分。权限不是后台里的一个小功能,它实际上决定了整个系统以后能不能持续扩展。

PHP开发 权限系统 后台管理