215 字
1 分钟
按钮级权限:shop 的 RBAC 四件套

四件套#

lib/permission/
app_role.dart # 角色定义(店长/收银/技师…)
app_permission.dart # 权限点定义
app_permission_service.dart # 判权:有没有、从哪来、过期没
app_permission_widget.dart # 控件:无权限直接不渲染

页面路由守卫只能拦住“进不去”,按钮级权限管的是“看不见”——收银看不到成本价、技师看不到全店报表。app_permission_widget 包一层,有权限才渲染,权限判断不散落在 onPressed 里

权限数据的来源#

角色随登录下发(user_service 缓存),app_permission_service 做本地判定 + 过期刷新。后端接口也要二次校验——前端权限是体验,后端权限才是安全,这句 README 式的话,每个项目都值得写一遍。

RBAC 落地清单:角色建模、权限点枚举、判权服务、显隐控件、后端复核,五层缺一不可。