最近项目中用到Ralasafe来作为权限管理系统,主要是和业务系统分类,使用了RMI技术,使之成为两个独立的项目。因此,只使用到Ralasafe的部分功能,如角色分配,角色管理,权限管理等这些功能。
使用原理是:从业务系统登陆,通过远程调用,一次性从Ralasafe里取出某个登陆用户的所有权限,全部回传到业务系统。
主要使用的Ralasafe的API是:Ralasafe.getBusinessPrivilegeTree()。
但并不是完全能满足我们的需求,需要修改部分源码。
1、远程对象需要序列化:Node类实现Serializable接口,User类也实现了Serializable接口。
2、需要获取全部的权限列表,不仅仅是显示菜单的权限树。
修改了UserRoleManagerImpl#public Privilege getBusinessPrivilegeTree(Object userId)中的
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())); |
09 | if (assignedPrivilegeIds.contains( new Integer(pvlg.getId()))) { |
10 | assignedPrivileges.add((Privilege) (pvlg.clone())); |
同时还需要在Privilege#public Object clone()中添加
1 | newOne.setDisplay(display); |
3、还有就是发布的1.2版本存在一些BUG,如编辑了权限,但不能保存权限的orderNum,好在Ralasafe社区已经修改了这个bug,重新打包编译就可以了。
本文固定链接: http://www.kaman.cc/?p=195 | 幸福一家