还在手写 RBAC?你那套「权限写到吐」的日子,该结束了

5 阅读3分钟

上周帮一个哥们看代码,他一个后台项目光权限部分就写了一千多行——角色判断、按钮显隐、接口拦截,全是手写的 if-else。我说你为什么不直接用现成的,他说:"框架生成的不灵活。"

我当时笑了。三年后你可能也会笑。

一套权限系统,你需要手写多少?

说实话,大部分中后台项目的权限需求高度同质化:

  • RBAC 角色 → 菜单权限:什么人看什么菜单,逻辑几乎是固定的
  • 按钮级权限:增删改查按钮谁看谁不看,不过是 v-if 的排列组合
  • 接口层拦截:没权限的直接 403,哪个项目都一样

这些东西你写过几次?十次?二十次?每次换个项目,重写一遍。代码逻辑几乎一样,只是变量名换了一下。

这本质上是个体力活,不是技术活。

自动生成 vs 手写:到底谁不灵活?

很多人排斥自动生成,觉得「不够灵活」。但你仔细想想:

你手写的 v-if="hasPermission('edit')" ,跟框架生成的 v-auth="'edit'",灵活性的差别在哪?

严格来说,没有差别。甚至 v-auth 这种指令形式比手写更干净——你不需要在每个组件里传 context、维护判断函数、担心合并冲突。

差的是你的控制感。你觉得手写更可控。但说实话,那些没出过问题的 RBAC 系统,核心逻辑都长得差不多。

我现在怎么搞

现在新项目后台这块,我直接搜 xygoadmin。基于 GoFrame + Vue3 + Element Plus,自带三级权限体系:

  1. RBAC 角色权限——创建角色 → 勾选菜单树 → 分配用户,三分钟配完,不用写一行判断逻辑
  2. 按钮级权限——v-auth="'add'" 一行指令搞定按钮显隐,比手写 v-if 干净十倍
  3. 字段级权限——控制谁能看哪些字段,金融/医疗场景的刚需,手写起来一个月起步

另外它的 CRUD 代码生成器 是从建表到前后端全套自动生成——API、Controller、Logic、列表页、编辑弹窗,一气呵成。

你可以说"生成的不够灵活",但等你手写完第十张表的增删改查,可能就不这么想了。

效率差在哪

同样是搭一个后台模块:

  • 手写路线:建表 → 写 Model → 写 API → 写 Controller → 写 Logic → 写前端页面 → 配路由 → 配权限 → 调试 → 修 bug → 合并分支的时候心在滴血
  • 生成路线:设计表结构 → 一键生成 → 微调业务逻辑

中间的差距不光是时间,还有决策疲劳。每多写一行模板代码,你的大脑就少一分精力去想真正的业务逻辑。

写在最后

我不是说你一定要用某个框架。我是说:如果你还在为每个项目手写一套 RBAC + CRUD,你需要问自己一个严肃的问题——

你省下来的"控制权",到底换来了什么?

欢迎在评论区聊聊你的经历——你是坚定的手写党,还是已经被生成工具折服了?🤔