我正在使用访问管理系统,现在我面临着挑战,要检测对当前授权的每次修改所获得和失去的权限增量。 因此,我正在考虑创建一个具有不同LABELS的并行图形,以表示先前的状态。 我正在尝试执行查询以获取两个图的所有权限和目标人口,然后计算增量。 这是我用来获取权限的查询,对于每个权限,它是目标人群(用户可以使用其权限的人员):
match (u:UserPrevious {Id: '1', GraphTenantId: '685bff85-2759-204a-afa7-f6ba516c4f9f'})
with u
match (u)-[:IS_ACCESS_USER|BELONG_TO|IS_ACCESS_GROUP*1..2]->(ra:RoleAssignmentPrevious),
(ra)-[:HAS_ROLE]->(rl:RolePrevious)-[:CONTAINS_PERM]->(permission:PermissionPrevious) with distinct u, ra, permission
match (ra)-[:IS_TARGET]->(tg:TargetGroupPrevious)
with distinct tg, permission
match (target:UserPrevious)<-[*1..2]-(tg)
Where (target)<-[:HAS_HIERARCHICAL_ACCESS|HAS_HIERARCHICAL*1..2]-(tg)
With distinct permission.ShortName as p1, collect(distinct target.ReferenceId) as targets1
Return distinct p1, targets1
如何对另一个userId执行相同的查询,然后计算增量?这首先意味着用户丢失或获得了什么权限,然后对于每个权限,用户丢失或获得了目标。 我的感觉是,这不会有很好的表现。 有什么可以帮助我的,还是我应该从Neo4j数据库中解决此问题?