我们在做应用开发的时候很经常的要用到权限的控制,如果哪些用户可以查看这个菜单,用户能在某个菜单有看到哪些数据,用户在这个菜单下所能进行的操作是什么。这里把系统权限分配分为三个方面:
一:菜单权限分配
指的是哪些用户可以查看哪些菜单。
二:业务数据权限分配
用户能在某个菜单有看到哪些数据。
三:角色权限分配
指的是用户在某些菜单下所能进行的操作是什么,是否有增删改查的操作。
根据上述设计,用户的权限判断整体流程如下:
1、
根据用户的菜单权限判断用户是否有访问该菜单的权限;
2、
根据用户所在的部门号、部门从属关系、共享部门,取得用户所能访问的部门号集合,根据这个集合显示业务数据;
3、
根据用户的工号和角色,判断用户在该菜单项所能进行的操作。
现对于流程的第一第二步骤先不考虑,我们只考虑第三步骤,如何实现呢?
实现的整体思路是:用户
—>
用户组
—>
用户组在菜单下的权限。即首先根据登录用户得到从属于哪个用户组,得到这个用户组可以操作哪些菜单项,同时得到用户组的操作权限。最后得到登录的用户在这个菜单下所拥有的操作权限。
通过上面的整体思路可能知道这个过程不难,只是入库和读取数据的问题。这里,我们只对
java
程序的代码做些简要的说明。
首先我们写一个类,保存用户在某个菜单的操作权限,如下:
//
用户权限类
public class Pub_role_right
{
private boolean ADD;
private boolean DEL;
private boolean MODIFY;
private boolean QUERY;
public boolean isADD() {
return ADD;
}
public void setADD(boolean add) {
ADD = add;
}
public boolean isDEL() {
return DEL;
}
public void setDEL(boolean del) {
DEL = del;
}
public boolean isMODIFY() {
return MODIFY;
}
public void setMODIFY(boolean modify) {
MODIFY = modify;
}
public boolean isQUERY() {
return QUERY;
}
public void setQUERY(boolean query) {
QUERY = query;
}
}
然后根据用户的
ID
和操作的菜单到数据库取得这个用户在这个菜单下的权限,保存在
Pub_role_right
里,如下:
//_str
为从数据库取得的结果
Pub_role_right _right = new Pub_role_right();
if(_str.indexOf("
增加
")!=-1) _right.setADD(true); else _right.setADD(false);
if(_str.indexOf("
删除
")!=-1) _right.setDEL(true); else _right.setDEL(false);
if(_str.indexOf("
修改
")!=-1) _right.setMODIFY(true); else _right.setMODIFY(false);
if(_str.indexOf("
查找
")!=-1) _right.setQUERY(true); else _right.setQUERY(false);
这时候这个类保存了用户在菜单下的的操作权限,我们要用到权限时,只要调用这个方法就可以了,比如在修改操作时,用于权限判断的代码如下:
if(_roleright.isModify()==false){
//
。。。。。
}else{
//
。。。。。
}
------------------------the end------------------------