Ralasafe的使用总结

最近项目中用到Ralasafe来作为权限管理系统,主要是和业务系统分类,使用了RMI技术,使之成为两个独立的项目。因此,只使用到Ralasafe的部分功能,如角色分配,角色管理,权限管理等这些功能。

使用原理是:从业务系统登陆,通过远程调用,一次性从Ralasafe里取出某个登陆用户的所有权限,全部回传到业务系统。

主要使用的Ralasafe的API是:Ralasafe.getBusinessPrivilegeTree()。

但并不是完全能满足我们的需求,需要修改部分源码。

1、远程对象需要序列化:Node类实现Serializable接口,User类也实现了Serializable接口。

2、需要获取全部的权限列表,不仅仅是显示菜单的权限树。

修改了UserRoleManagerImpl#public Privilege getBusinessPrivilegeTree(Object userId)中的

01                 /*
02 // only add granted privilege & displayable privilege here
03 if (pvlg.getDisplay() &&
04         assignedPrivilegeIds.contains(new Integer(pvlg.getId()))) {
05     assignedPrivileges.add((Privilege) (pvlg.clone()));
06 }
07 */
08  
09 if (assignedPrivilegeIds.contains(new Integer(pvlg.getId()))) {
10     assignedPrivileges.add((Privilege) (pvlg.clone()));
11 }

同时还需要在Privilege#public Object clone()中添加

1 newOne.setDisplay(display);

3、还有就是发布的1.2版本存在一些BUG,如编辑了权限,但不能保存权限的orderNum,好在Ralasafe社区已经修改了这个bug,重新打包编译就可以了。

本文固定链接: http://www.kaman.cc/?p=195 | 幸福一家

你可能感兴趣的:(Ralasafe的使用总结)