首先,设置三种要素:用户、群组、角色。
用户为登录用,对应到人。群组对应为用户的集合,是一种特殊的用户。角色为一组权限项的集合,用户(群组)都有各自的角色。
权限的实现通过Permission类和Rule类来实现。
Permission供外部调用,Rule为一个接口,为权限判断规则。
Permission是一个抽象类,有以下方法
public boolean hasPermission(User user,HashMap oldData,Input input);
public String getPermissionName();
public abstract Rule[] getDenyRule();
public abstract Rule[] getAcceptRule();
hasPermission方法供外部调用,已实现,实现方法为先根据getDenyRule()得到的规则判断权限是否被阻拦,再根据getAcceptRule来判断是否有权限。
而Rule接口的接品则由用户自行定义,随包附带了一个已实现的Rule,实现的功能如下:
先寻找User的所有角色,然后判断角色是否有权限,如果无权限则寻找其父级群组,再取父级群组的所有角色进行判断是否有权限,如果无权限则再往上级群组找,直到找最上一级还是无权限才判断为无权限。
现实现判断权限有无权限的方式已可以达成的有以下三种:
1、 是否有操作的权限。
2、 是否有操作的子操作的权限。
3、 在数据为某条件时有操作(子操作)的权限。
在进行程序开发时,第一步,编写User,Group,Role的实现类,已提供了一套XML的实现类。
第二步,写配置文件,进行权限项的配置。
第三步,在程序中要进行权限判断的地方调用Permission.hasPermission方法即可。
以后我会把代码逐天贴出来。
如果大家有什么别的种类权限要进行判断的,请给我发送邮件,我继续改善,欢迎大家多提意见。