jackyrong

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  在struts2中,今天看到一个简单的做权限的方法,小结如下,也就是最传统的角色的做法,比如:
1 定义各个菜单项的编码,
   <s:set name="ADBANNER_CREAT" value="101"/>
<s:set name="ADBANNER_UPDATE" value="102"/>
<s:set name="ADBANNER_DELETE" value="103"/>
<s:set name="ADBANNER_LOOK" value="104"/>
<s:set name="ADVERTISMENT_CREAT" value="201"/>
<s:set name="ADVERTISMENT_UPDATE" value="202"/>
<s:set name="ADVERTISMENT_DELETE" value="203"/>

 如此类推

2 之后将每个用户的角色保存起来,比如userid=1的角色可以为101,203,202

3 在调用每个菜单项的时候,这样判断,
    <s:if test="@com.kemp.util.confighand@handleValidate('30',#session.rolecontent) == 1">
   p = new createPanel('adveradmin','客户管理');

.........

 这里注意<s:if test="@com.kemp.util.confighand@handleValidate('30',#session.rolecontent) == 1">的写法哦

  这里将之前用户登陆后,提取数据库中的一长串101,203,202,放到rolecontent的session中去了.之后调用
com.kemp.util.confighand类中的handleValidate方法去判断,判断当前用户的权限中是否包含30系列的权限,如果等于1的话,则继续做下面的事情.

 /**
    * 判断allconstant中是否有constant中指定的权限
    * @param constant 表示某个特定的权限
    * @param allConstant 表示有某用户目前有的权限,用,隔开
    * @return
    */
   public static int handleValidate(String constant, String allConstant){
    int flag = 0;
    String con[] = allConstant.split(",");
    for(int i=0;i<con.length;i++){
     if(con[i].startsWith(constant)){
      flag = 1;
      break;
     }
    }
    return flag;
   }

posted on 2008-09-30 18:26  jackyrong的世界  阅读(365)  评论(1编辑  收藏  举报