在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;
}