Authzed未识别递归层级关系的问题排查求助
Authzed未识别递归层级关系的问题排查求助
我最近在Authzed的Schema和关系配置上碰到了个棘手的问题,搞不清哪里出了问题,想请教下社区的大佬们。
我的业务场景是这样的:用户可以通过直接加入或者基于层级化地理位置的间接规则成为某个组的成员。地理位置是三级递归层级结构:国家→州/省→城市,具体的继承规则是:
- Wichita、Topeka、Dodge City的成员自动属于Kansas
- Seattle、Tacoma、Spokane的成员自动属于Washington
- Kansas和Washington的成员自动属于United States
- Pune的成员属于Maharashtra,Maharashtra的成员属于India
我先写了一套Schema,已经能正常支持直接成员关系的检测。比如我创建了一个wichitans用户组,它的成员包括:
- 直接加入的用户Samuel(他目前在Seattle,后续会搬到Wichita)
- 属于Wichita这个
org_unit的所有成员
我用权限名is_user_in_ex/implicits来区分显式和隐式成员,测试时能看到Samuel在Wichita的显式成员列表里,Wally(属于Wichita的子单元)在隐式成员里,这完全符合我的预期。
但当我修改测试关系的第22行,把原来关联Wichita到implicits的配置,改成关联Kansas到implicits后,奇怪的问题出现了:
- Samuel依然在显式成员里,没问题
- Wichita依然在implicits里(因为它是Kansas的子单元),也没问题
- 但Wally却不在implicits里了
我原本以为Authzed会自动递归评估这种层级关系,但看起来并没有生效。想请教下大家:
- 有没有专门的操作符可以让关系实现递归生效?
- 还是说我需要修改Schema的定义来支持这种递归?
- 另外我不想把
org_unit拆分成三个不同的层级类型,有没有办法在现有结构下解决这个问题?
备注:内容来源于stack exchange,提问作者Sidney
相关产品推荐
相关产品推荐

