社区平台系统设计——1.1 用户子系统(权限系统)
权限系统可以说是每个业务系统都用的到的,社区平台也不例外,由于考虑社区平台的灵活性,故现在考虑设计一个较为灵活通用的权限系统。
做了这么多年的软件,每个系统的权限管理大同小异,不过普遍不太灵活,所以每个项目也是在反复造轮子,现有公司的权限系统算是目前最灵活的,不过仍有改进余地,接下来就来讲解一下权限系统模型的演进过程。
一、权限的领域模型
1.ACL模型
ACL 是 Access Control List 的缩写,称为访问控制列表,系统给每个用户分配可操作权限的列表,当进行操作时,获取用户的权限列表判断权限是否在列表中,模型如下:
ACL模型比较适用于为用户分配特定资源的权限的场景,模型较为简单,容易实现对资源的权限控制,不过要求用户与资源的数量都比较少,对于大批量用户拥有类似或相同的权限的情况,管理起来比较麻烦,所以现在较多的应用于操作系统文件的权限管理。
不过我所做过的早期业务系统对权限控制不会细分到每个资源,而是一种极简的权限模型,所以会是如下的简化模型: