做Erp项目,权限管理
      得知有一个权限的算法,我根据我的理解写下来,求高手细解......
 
    如: 权限有几种    查看 、审核、 添加 、 修改 、 删除 等
         将查看的结果值定为 1
           审核的结果值定为 2
           添加的结果值定为 4
           修改的结果值定为 8
           删除的结果值定位 16
       
     当User的权限值为0时则导航栏菜单不显示该项
                 值为1时则只有查看权限 
                 值为3时则有查看和审核权限       
                 值为5时则有查看和添加的权限
                 值为9时则有查看和修改的权限
                 值为17时则有查看和删除的权限
                 值为7时则有查看、审核和添加的权限
                 以此类推 .............
   首先,查看权限是除开0以外任何权限都必须要添加的
                
              权限值等于各种权限值的和
                   权限值不等于任何一种或者多钟权限值之和(除开1),权限值全部是唯一的。
                   
         我的理解这个算法为 2的N次方  
           N的取值范围为 0 到无穷大 (不知道打那个符号)  目前正在着手做这一模块,虽说功能完成,但是仍不得解, 求各位前辈细解,能附加实例更感激不尽
               
      如果方便能细说一下页面上这种权限功能如何进行控制 
         谢谢
               

解决方案 »

  1.   

    这个没有必要用算法来控制值吧?简简单单设置个枚举。在加FORM认证也好方便数据库维护啊。你这样的算法 维护数据库的时候也要根据这个算法来生成值么。。
      

  2.   

       自己琢磨了一下,
      权限值大于1的时候,就是会有其他的权限    (等于1是查看权限)
      然后要获取到该用户的权限就需要
        假设一个权值   int power=31;  
    我需要知道他有哪些权限
      if(power==0)
      {
         //没有权限  不显示菜单导航
          return ;
      }  if(power==1)
      { 
       //只有查看权限  
         return ;
      }
      if(power>1)
      {
        //有超过查看的权限
         power-=1;  //减去一去掉查看权限
         //然后将power去匹配权限值     //将去除查看权限后的权限值匹配原来定义好的权限值     //首先单个匹配,查看是否有匹配的结果,有则返回,没有则继续往下运行     //两两组合匹配,将任意两个权限值的和与之匹配          注:任意权限值不包括 0和1
                   匹配的次数等于 (权限值的个数-2)*(权限值的个数-2-1) /2
                 有则返回,没有则继续往下运行
         //三三组合匹配,将任意三个权限值的和与之匹配
          
         //        以此类推  直到找到有与之匹配的权限
          
        //所有的组合,不管是单个、两两组合、三三组合等,所得出的结果值都是唯一的
      }我的理解到此处,还望各位细解.........
          谢谢
        
      

  3.   

      我的想法是这样的
          在User的权限设置的时候,讲所有的权限值都相加,存入数据库User表的权限值字段中
       
      到时候写一个公共的方法,需要用到权限处就直接调用,      所有涉及到权限的按钮等都统一命名,这样就可以一次性处理了....
      

  4.   

    额,基础语法请lz自行google “enum+flags”的用法