TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
权限是企业应用中常见限制关系,比如说有项目,成员两种类,成员对项目的权限不一,对不同项目还有不同权限,怎么设计这样的系统呢?
对于这样的系统一种常见的处理方式是固化,就是按等级给定权限,比如部门经理拥有所有项目的CRUD权限,项目经理只对自己的项目有CRUD权限,一般成员只有R权限,这样的设计不能完全反映现实的关系。只能用于非常僵化的场合。
实际上,项目,成员的关系类似于房间的门和人的关系,载它们之间加上钥匙一切都迎刃而解。
钥匙定义如下
class Key{
int projectId;// 项目的唯一ID
boolean create;
boolean read;
boolean update;
boolean delete;
}
钥匙串定义如下:
class KeyBunch{
Map buch;// 里面放的钥匙的hashMap
boolean isCanAccess(Project project){
.....
}
}
然后把钥匙串作为Member类的一个子项就可以了,Key由Project类生成,然后附加到Member类的KeyBunch中,其它函数可以根据情况书写.
这样,有了Key类和KeyBunch类,Project类和Member类的权限关系就变得合乎自然了,Project类和Member类也进一步解耦. |
|