设计角色状态权限控制问题

http://www.dewen.io/q/4996/%E8%AE%BE%E8%AE%A1%E8%A7%92%E8%89%B2%E7%8A%B6%E6%80%81%E6%9D%83%E9%99%90%E6%8E%A7%E5%88%B6%E9%97%AE%E9%A2%98

 

问:

extjs中,模块包含菜单,菜单对于表格数据,表格含有增加,删除,按钮,设计权限控制。
还有,表格行数据状态有审核,审批,付款,发货,要求不同角色处理不同的状态。
请问如何设计?请说下具体思路,不希望是通过按钮隐藏实现。有无办法实现

 

答:

 

可以实现,说说我的思路,其实不通过页面隐藏按钮,菜单等,更安全的做法无非就是后台权限的验证或者URL验证工作。
首先,Ext与服务端的校验工作都是Ext。data。Connection这个类中的方法实现的,与服务端的交互首先要被这个类中拦截的。知道了这一点剩下的就少说了,后台的权限可以用很多方法控;制,这里就不说了,不是重点,我们假定用acegi来做验证机,然后根据用户不同的授权来返回:
A。jsp-;未登录;b.jsp-无权限等等,然后在a。jsp中只是简单的输出MSG。NOLOGIN。b.jsp中输出-MSG。NOT_ACCESS.然后在复写Conection类中的handleResponse方法就可以了。
例子如下:

  1. Ext.override(Ext.data.Connection, {  
  2.             handleResponse : Ext.data.Connection.prototype.handleResponse.createInterceptor(  
  3.          function(response) {  
  4.              var resText=response.responseText;
  5.         if (resText.length>5) {
  6.            resText=resText.substr(0,9);
  7.         }  
  8.         if (resText=='msg_nologin'){
  9. //未登录,让该用户去登陆
  10.             window.top.location.href = topURL+"/login.jsp";
  11.          } else if (resText=='msg.NO_ACCESS'){
  12.               Ext.Msg.show({
  13.        title : '错误提示',
  14.        msg : '无权访问此功能',
  15.        buttons : Ext.Msg.OK,
  16.        icon : Ext.Msg.INFO
  17.         });
  18.           };    
  19.          } else if (resText=='<!--404--'){
  20.               Ext.Msg.show({
  21.        title : '错误提示',
  22.        msg : '页面未找到',
  23.        buttons : Ext.Msg.OK,
  24.        icon : Ext.Msg.INFO
  25.         });
  26.          }
  27.         })  
  28. });
 

----------------------------华丽的分割线-------------------------------------
完善下前台部分的,也很简单,首先所有的页面在加载之前,要进行权限的过滤的,对于页面的按钮,可以使用json来讲过滤的结果的传递到前台,比如['add_but':true,'remove_but':flase]等,通过boolean值来判别这个按钮是否运行在页面显示
然后前台部分按照取来的json值进行初始化就可以了

  1. var button = new Ext.Button({  
  2.       hidden:flag,//这里写刚才从后台传递来的boolean值,表明是否显示  
  3.       text:'submit'  
  4. }):
 

这些json串可以按照角色存在一张页面权限表中去控制

 

posted on 2015-08-21 15:49  walter371  阅读(290)  评论(0编辑  收藏  举报

导航