昨天,我隔壁的一批人讨论了一天的权限管理问题,直道我头痛的离去。我把他们讨论的东西整理如下:
1,权限管理的作用域是被赋予权限的人的集合。
2,人有三个纬度,个人,角色和部门
3,个人权限和角色权限必须在部门权限存在的前提下。
3.1,角色纬度受部门纬度限制即 R(G(a)) 可以,但G(R(a))错误 : G是给a赋予部门权限,R是给a赋予角色权限。
3.2,个人纬度受部门纬度限制即 P(G(a)) 可以,但 G(P(a)) 错误: P是给a赋予个人权限。
4,角色权限和个人权限满足:R(P(G(a))) = P(R(G(a))) 可以写成 R.P(G(a))
4, a的权限可能由多次部门权限操作完成并且再由多次角色权限操作完成并且再由多次角色权限操作完成即:∑x=1~nPx.∑y=1~mRy(∑z=1~kGz(a)):(实在对不起,我实在不知道如何弄出数学公式的排版出来)
5,那么可以很容易的看出来a对象的三个属性上的逻辑关系了。参照上一篇文章建立数据库层。但是我不建议完全参考。因为这次不需要把全部用户的权限资料都放在内存里。用到谁把谁拿出来就行。因此可以让BEZI直接操作DBO,把TREE换成RIGHT.操作方式变成工厂模式就成了。并且DBO是RIGHT的工厂。并且DBO也是RIGHT操作的监听者就可以了。