我正在使用Spring 3.0(Spring MVC,Spring Security,Spring Roo,Hibernate)将软件作为服务进行开发
我必须想出一种灵活的访问控制列表机制,我有三种不同类型的用户
系统(谁可以对系统执行任何操作,包括admin和内部守护程序)操作(可以添加和删除用户,组织并代表用户和组织进行维护工作的人员)最终用户(他们属于一个或多个组织,对于每个组织,用户可以具有一个或多个角色,例如成为组织管理员或组织只读成员)(像orgadmin这样的角色也可以为该组织添加用户)现在我的问题是,我应该如何建模用户的实体?
如果我仅选择“最终用户”,则它可以属于一个或多个组织,因此每个用户可以包含一组对其组织的引用。但是我们如何为每个组织建模用户角色,
因此,例如,用户UX属于组织og1,og2和og3,对于og1,他既是orgadmin,又是org-read-only-user,对于og2,他只是orgadmin,对于og3,他仅是org-read-only -用户
我有可能让每个用户单独属于一个组织,但这使系统受到限制,我不喜欢这个想法(尽管我仍然会满足要求)
如果您拥有更好的可扩展ACL体系结构,请提出建议。由于它是一种软件即服务,因此,如果使用同一系统,则可以期望会有许多不同的组织参与其中。我担心将og1和og2数据保留在同一数据库上不是一个好主意(如果og1决定在系统上生成100个报告,则og2应该不会受到影响),但是这是目前有所改进的事情,并且不是与ACL直接相关,但与数据的物理分布和基于这些ACL的服务设置有关
这是社区Wiki的问题,请更正您希望做的任何事情。谢谢