动机
在 ReactGo 中,用户可以设置角色,角色可以限制用户的访问权限,这种模式在多数情况下都工作的很好, 但也有个问题,例如在一个交易系统中,有 2 个用户可以登录系统查询交易明细,A 用户只能查看 A 商家的明细,B 用户只能查看 B 商家的明细。这个例子里 A 用户和 B 用户本质上访问的资源是一样的, 所以不能设置 2 个不同的角色来进行区分。这需要一种办法在用户和商家之间建立关系, 一个最直接的办法就是为用户增加一个商家的属性,但这不够灵活,例如一个用户可以查看 2 个商家的明细, 或者某个地区的商家的所有明细。如果系统中的资源变得更多,那么组织管理这些资源就会变得更复杂。
层级管理作为一个中间层,将资源和用户分离开来管理(解耦),可以缓解复杂性。层级管理树状的节点集合, 用户与节点进行绑定,节点与资源绑定,然后通过一组 API 来查询用户最终可以访问的资源。