zoukankan      html  css  js  c++  java
  • 多系统权限设计(一)

     

    多系统权限设计

    1.      多系统基于角色的权限设计

    这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述.此处采用角色关联模块的方式。


    2.       多系统基于操作的权限设计

    这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:


    但是如果直接使用上面的设计,会导致数据库中的_SysUserFuncOperate这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案3

     

    3.       多系统基于角色和操作的权限设计

    如上图所示,我们通过采用角色分配操作的方式,这样子就可以减少操作权限表(_SysRoleFuncOperate 中的记录,并且使设计更灵活一点。

    但是这种方案在用户需求的考验之下也可能显得不够灵活够用,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色,我们需要设计一种更合适的结构来满足用户对权限设置的要求。

     

    4.       2,3组合的权限设计,其结构如下:


    我们可以看到在上图中添加了_SysUserFunc_SysUserFuncOperate表,使用此表来添加特殊用户的权限。这样在应用程序中我们就需要通过_SysUserFuncOperate_SysRoleFuncOperate两张表中的记录判断权限。

    当然,有可能用户还会给出这样的需求:对于某一种Operate所操作的对象某一些记录会有权限,而对于其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,这时候我们需要设计更复杂的权限机制,对于此种情况,此处不作讨论,将会在以后把这种情况分为业务权限一块分析处理。

     补充:

    对于上面介绍,有一些基础数据未列出,下图显示全部表的关系。其中有_SysFuncOperate,_System,_SysFunctions.

    _SysFuncOperate:模块操作权限表,记录此模块所有的操作权限。

    _Systems:全部系统

    _SysFunctions:全部系统模块

    备注:由于_SysFunctions加入的CultureInfo,多语言版本显示问题,所以在图上不能直接标示_SysUserFunc_SysFunctions_SysRoleFunc_SysFunctions的关系。其原本SysID,FuncID_SysUserFunc_SysRoleFunc外键。

     

     

    参考资料:

    http://www.cnblogs.com/yukaizhao/archive/2007/04/15/user_role_action_permission.html

    对于多系统的使用,可参考推荐一个简单权限管理系统的页面。由于没有美工,不太好看。

     

    作者:DragonXiong

    出处:http://s021368.cnblogs.com
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.。

     

  • 相关阅读:
    团队冲刺--第二阶段(五)
    团队冲刺--第二阶段(四)
    团队冲刺--第二阶段(三)
    团队冲刺--第二阶段(二)
    团队冲刺--第二阶段(一)
    第一阶段意见评论
    人月神话阅读笔记02
    基础-定位
    基础-颜色
    标准文档流
  • 原文地址:https://www.cnblogs.com/s021368/p/1524458.html
Copyright © 2011-2022 走看看