用户和用户组是多对多的关系,用户加入用户组就得到用户组的权限,但是怎么处理用户如果被从用户组删除了之后,用户权限的删改?因为,用户组中某一部分权限可能是重复的!
比如说U1用户在用户组:管理组和操作组中,管理组的权限是可以执行AA,BB,CC,DD;操作组的权限是BB,CC,EE,FF
用户U1加入后自动得到权限AA,BB,CC,DD,EE,FF,如果用户剔除了U1在管理组那么他的权限就只有BB,CC,EE,FF了!要解决这个问题时,你们怎么做,设计时是怎么来设计的?

解决方案 »

  1.   

    在我的系统中,用户、用户组、权限三者,用户和权限是相对独立的,也就是说用户不直接关联权限,而是通过用户组来链接。如:U1用户属于管理组,管理组拥有权限 AA,BB,CC,DD;使用时,先通过用户所属的用户组,找到该用户所应拥有的权限;当权限类型发生变化时,只需对用户组进行操作即可,而不必修改每个用户。
        这样解决上述问题就变得相对简单,当用户所属的用户组发生变化后,在使用时只需重新核对该用户的用户组类型,然后找到该用户组所应拥有的权限。U1用户属于管理组(权限AA,BB,CC,DD)和操作组(BB,CC,EE,FF),由用户->用户组->权限得到U1用户拥有权限AA,BB,CC,DD,EE,FF,如果剔除了U1用户的管理组职权,不必关心管理组具体有哪些权限,在使用时,系统通过由用户(U1)->用户组(操作组)->权限(BB,CC,EE,FF),查得用户U1拥有权限BB,CC,EE,FF。
      

  2.   

    这个的确比较困难;
    看看WINDOWS的拥护权限你就知道了;
      

  3.   

    首先有一点:一个用户只能属于一个组,并且有唯一的id 号。
    用户权限的存放可以用:用户ID 功能点ID 的方式。
    增加权限时,只要按以上的方法存放。
    删除权限时,删除以上记录就可以了。
    对于组或角色也可以用以上的方法。
    但有一点要求:那就是要把所有的功能点进行集中管理,并且一个功能点对应一个ID号。以上的想法是有实践中使用过的,请大家发表意见。
      

  4.   

    能不能这样这样,把所有的权限建在同一个表中,比如userid,leiid,aa,bb,cc,dd等,有没有全限用1,0区分,0表示没有该项权限1则反之.userid为用户唯一id,leiid表示权限项目,这两个字段决定一条记录.对于增加用户将相应的组权限分入相当于insert into,当修改权限是更新权限相当于update,