权限系统确实是可大可小的系统,很难说有一个通用的。
有时我的客户说只要最简单的 User -> Subject ACL 控制就可以了,但是有时又提出更复杂的要求....
因为公司整个内联网的应用框架是我一个人在规划,所以,我可以设计出一套在公司内, 应用之间比较通用的模型(还在设计规划过程中,也许明年初我会实现它)。
在我现在的模型中,除了上面的 Subject,User,Role,Group,Permission,Operation 这些概念外,还有 Scope 和 Appointment 我引入 Scope 这个概念,就是为了做到比较通用,因为 上面的 Subject,User,Role,Group,Permission, Operation 等等,都是在一定空间内存在的。拿 Domain 来举例,例如: domainA/UserA 是在 domainA 内的用户, domainB/UserA 是在 domainB 内的用户, 这两个域中都有叫 UserA 的用户,但是他们所指向的人确是不同的,这里就需要引入 Scope 的概念,除了 User, 其它的 Object 都是在一定 Scope 内存在的,超出一定的 Scope, 同样叫做 UserA 的人就是不同的人,他们拥有的权限可能就不一样了。
Appointment 在我的设计中,主要是面向时限控制的,例如在 workflow 这样的系统中,有时一个 manager 要出差,在公司外面因为各种原因不方便做审批,但是公司运作不能因此而停滞了,所以需要由 manager 授权给一位员工,如一位 leader, 但是这样的授权需要有个时限,如 manager 需要出差两个星期,这两个星期内的审批权,他可以转授给 leader, 所以,一个 appointment 可能包括了 assigner,receiver,time_period[from,to], subject, operation....
这样,当 leader 在对 subject 使用 operation 时,系统就会判断它是否是 receiver, 还有,操作的 time_period 是否有效等等~~ |
|