如果它真的是动态的话 Spring Security ACL 这是一个很好的方法。对于每个组,company,func,method等在表ACL_SID中创建授予的权限。
然后为每个用户在ACL_SID中创建一个条目,并将主标志设置为true。
对于要保护的系统中的每个域对象,请在ACL_OBJECT_IDENTITY中创建ACL,并通过在ACL_ENTRY中插入行来授予正确的权限。
可以在ACL_ENTRY中插入授权和撤销条目,并且顺序很重要,这意味着可以撤销对第0行中的组的访问权限,并且优先于第1行上的授权。
ACL也可以在层次结构中组合,并且可以设置为从父级继承或不继承。
通常,只要基于角色的访问解决方案不能为给定的用例提供足够的灵活性,就会使用ACL。