我正在使用 Spring 3.0(Spring MVC、Spring Security、Spring Roo、Hibernate)制作软件即服务
我必须想出一个灵活的访问控制列表机制。我有三种不同类型的用户
- 系统(可以对系统做任何事情的人,包括管理员和内部守护进程)
- 操作(谁可以添加和删除用户、组织以及代表用户和组织进行维护工作)
- 最终用户(他们属于一个或多个组织,对于每个组织,用户可以拥有一个或多个角色,例如成为组织管理员或组织只读成员)(像 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 问题,请更正您希望这样做的任何内容。谢谢