读书人

运用ralasafe中遇到的有关问题

发布时间: 2012-07-01 13:15:00 作者: rapoo

运用ralasafe中遇到的问题

前言:以下都是我自己的看法,如果有什么不足之处,请各位大侠指点。

?

???????最近一个星期都在把ralasafe整合到项目里面,ralasafe是一个很好的中间件,把我们需要的权限都处理了,方便了

?

我们对权限的管理。但我在从ralasafe里读取权限树的时候,遇到了一个很奇怪的问题。我是这样设计的,在我的应用系

?

统中有ID为1的用户A1;在ralasafe中建立了一个R1的角色;并且建了p1、p2、p3三个权限,p2、p3是p1的子节点;

?

现在我把A1用户设置为R1角色,把权限p1、p2、p3授予R1角色。我在代码中如下调用ralasafe的权限树

??????

??????

private synchronized void buildBusinessPrivilegeTree() {if (!businessPrivilegeTreeChanged)return;businessPrivilegeTree = new Privilege();businessPrivilegeTree.setId(Privilege.BUSINESS_PRIVILEGE_TREE_ROOT_ID);businessPrivilegeTree.setType(Privilege.BUSINESS_PRIVILEGE);businessPrivilegeTree.setIsLeaf(false);businessPrivilegeTree.setPid(Privilege.NULL_ROOT_ID);businessPrivilegeTree.setParent(null);allBusinessPrivilegesMap = new HashMap();Collection privileges = getAllBusinessPrivilegesFromDb();privileges.add(businessPrivilegeTree);buildTree(privileges, allBusinessPrivilegesMap);businessPrivilegeTreeChanged = false;}

?

当我继续往下执行的时候,我发现在public Privilege getBusinessPrivilegeTree(Object userId)这个方法的下面,

?

又new出来了一个root的Privilege对象,这个root对象的id也为0,pid也为-2,也把它add到allBussinessPrivileges

?

中,这样导致了这个集合中有两个内容相同的对象,以至于下面返回的root对象的children有时候为空,有时候不为空。

?

???? 以上是小弟的说法,还请汪老大,出来帮帮指点指点.....

????

????? 也相信ralasafe以后会越来越完善,中国的开源就靠大家了.....

读书人网 >开源软件

热点推荐