根据用户权限动态生成菜单

现在项目里有这个需求:用户登录的时候可以选择不同的角色,每个角色对应着各种不同的权限,这些权限决定了要给用户显示哪些菜单。

我是这样实现的:首先将用户登录后的权限信息和这些权限可以显示的菜单项一起封装在userinfo里设到session里面,

界面上js里事先设定好了各种权限和菜单对象,并且每个对象都用一个boolean型开关来标识,JS从传过来的权限和菜单项中取出该用户的权限和菜单数组,把对应的boolean值改成true,接下来再把菜单的boolean开关是true的添加到toolbar上,权限也是一个样子(对应菜单的子项),这样菜单就动态的生成好了。

这样做的缺点是后期维护起来不好,因为菜单项和权限都事先写死在js里面了,要想修改的话必须一个一个改,但是如果将菜单的生成全都拿到服务端来做又觉得界面和服务耦合在一起了,服务做了太多的事,我一直认为界面的东西就应该全交给html和JS来做,尤其是现在有了EXT这么好的客户端组件库。不知道有没有更好的解决办法

js代码例如:

js 代码
 
  1. //1总线菜单   
  2. var bbusmenu=false;   
  3. //2接入点菜单   
  4. var bportalmenu=false;   
  5. //3规约菜单   
  6. var bcriterionmenu=false;   
  7. .....   
  8. //菜单开启   
  9. for (i=0;i
  10.     var m=menulist[i];   
  11.     switch(m)   
  12.      {   
  13.     case '1':   
  14.     bbusmenu=true;   
  15.     break;   
  16.     case '2':   
  17.     bportalmenu=true;   
  18.     break;   
  19.      case '3':   
  20.     bcriterionmenu=true;   
  21.     break;   
  22. ......   
  23.   
  24. //总线菜单   
  25.     var busmenu=new Ext.menu.Menu({   
  26.         id:'busMenu',   
  27.         items:[   
  28.         {text:'总线维护',   
  29.         handler: onItemClick   
  30.         },   
  31.         {   
  32.             text:'总线互访配置',   
  33.             handler:onItemClick   
  34.         }   
  35.         ]   
  36.     });   
  37.     //接入点菜单   
  38.     var portalmenu=new Ext.menu.Menu({   
  39.         id:'portalMenu',   
  40.         items:[   
  41.         {text:'接入点维护',   
  42.         handler: onItemClick   
  43.         },   
  44.         {text:'接入点挂接总线配置',   
  45.         handler: onItemClick   
  46.         }   
  47.         ]   
  48.     });   
  49.     //规约菜单   
  50.         var criterionmenu=new Ext.menu.Menu({   
  51.         id:'criterionMenu',   
  52.         items:[   
  53.         {text:'规约维护',   
  54.         handler: onItemClick   
  55.         }]   
  56.     });   
  57. ......   
  58.   var tb = new Ext.Toolbar();   
  59.     tb.render('toolbar');   
  60.     if(bbusmenu){   
  61.           tb.add(   
  62.         new Ext.Toolbar.MenuButton({   
  63.             text: '总线管理',   
  64.             handler: onButtonClick,   
  65.             tooltip: {text:'This is 总线', title:'Tip Title', autoHide:false},   
  66.             iconCls: 'blist',   
  67.    menu : busmenu   
  68.         }), '-');   
  69.     }   
  70. ......  
这样一大坨就下来了....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值