用户及权限管理设计.ppt
**SystemsAnalysisDesign5thEditionSystemsAnalysisDesign5thEdition2****3****用户及权限管理设计主要内容用户管理及权限管理的意义用户及权限管理涉及的几个概念用户及权限管理设计方案用户及权限管理通用功能设计用户及权限管理设计实例用户管理及权限管理的意义用户管理及权限管理一直是应用系统中不可缺少的一个部分系统用户很多,系统功能也很多不同用户对系统功能的需求不同出于安全等考虑,关键的、重要的系统功能需限制部分用户的使用出于方便性考虑,系统功能需要根据不同的用户而定制用户及权限管理涉及的几个概念01用户分类:系统用户、超级用户、管理员用户、DBA用户、领导用户、专家用户、操作员用户、客户用户、……05组:为了更好地管理用户,对用户进行分组归类,简称为用户分组,如普通QQ群、高级QQ群;一级单位用户、二级单位用户等03用户:应用系统的具体操作者,用户可以拥有一定范围的权限02系统权限:即对不同用户使用系统资源(功能菜单项、按钮、输入控件等)的使用或访问权限04角色:为了对许多拥有相似权限的用户进行分类管理,定义了角色的概念,例如系统管理员、管理员、用户、访客等角色用户及权限管理涉及的几个概念权限、用户、角色、组之间的关系用户的权限集=自身的权限+所属的各角色权限+所属的各组权限用户及权限管理设计方案基于角色的权限设计基于操作的权限设计基于角色和操作的权限设计23组合的权限设计精确至数据记录的权限设计涉及资源、权限和规则的权限设计基于角色的权限设计最常见也是比较简单的方案通常这种设计已经足够微软设计了该方案的通用做法:所有“操作”(功能)跟“角色”匹配在程序中根据“角色”对是否具有“操作”权限进行控制用户及权限管理设计方案用户及权限管理设计方案基于操作的权限设计该模式下每一个“操作”都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录问题:如果直接使用上面的设计,会导致数据库中的UserAction表数据量非常大,需要进一步设计提高效率该方案是对方案2的改进:添加了Role和RoleAction表,从而可以减少UserAction中的记录,并且使设计更灵活不足:经常需要定义新的“角色”
例如:当用户要求临时给某位普通员工某操作权限时,就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色基于角色和操作的权限设计用户及权限管理设计方案用户及权限管理设计方案添加了UserAction表,使用此表来添加特殊用户的权限,该表中有一个字段HasPermission可以决定用户是否有某种操作的权限,该表中记录的权限的优先级要高于UserRole中记录的用户权限。这样在应用程序中我们就需要通过UserRole和UserAction两张表中的记录判断权限不足:有可能用户会要求某一种Action所操作的对象部分记录有权限,而对于其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,该设计不能满足要求23组合的权限设计用户及权限管理设计方案该方案需要对每一种不同的资源创建一张权限表例如:上图中对Content和Channel两种资源分别创建了UserActionContent和UserActionChannel表用来定义用户对某条记录是否有权限不足:该设计可以满足用户需求但是不是很经济,UserActionChannel和UserActionContent中的记录会很多,而在实际的应用中并非需要记录所有的记录的权限信息,有时候可能只是一种规则,比如说对于跟Channel什么级别的人有权限;这时我们就可以定义些规则来判断用户权限,下面就是这种设计5.精确至数据记录的权限设计〔对于同一种实体(资源)用户可以对一部分记录有权限〕用户及权限管理设计方案该设计下角色的概念已经没有了,只需要Rule在程序中的类中定义用户是否有操作某种对象的权限。涉及资源、权限和规则的权限设计**SystemsAnalysisDesign5thEditionSystemsAnalysisDesign5thEdition2****3*****