oa系统权限设置问题,请大家给点思路?
如何实现较好? 问题点数:50、回复次数:3Top
1 楼zhang21cnboy(事了抚衣去,不留身与名)回复于 2003-12-02 17:06:53 得分 10
用户、角色、
一个用户可以有很多角色,一个角色里面可以有很多权限。。。。。。Top
2 楼xinshou1979330(Success.java)回复于 2003-12-02 17:52:33 得分 40
分四种实体
user : 用户信息,这里只保存必要的信息(比如登录名和密码)。因为你要重用嘛。和具体系统有关的用户信息不要保存在这里,提供一个关联即可
userGroup : 用户组。 和用户是一对多关系。一个userGroup里保存多个用户
role : 角色。 就是你通过需求分析出来的系统有哪些角色。 一个角色里可以保存多个用户组。
Resource : 资源。就是系统有哪些功能。 resource是和role有关系的。 在需求时就可以确定什么样的角色可以有哪些功能。一个role里可以有多个resource。
这样通过四种实体的关系,可以得到一个用户有哪些功能。
做一个通用的模块把上面这四种实体维护起来到数据库中。 (这个一点也不难)
定义好这个模块对外的接口。以提供外部调用。
在你的权限模块加一个单独的类,提供一个静态的验证的方法。比如
boolean hasResource(String userId, String resourceId);
提供一个用户,和一个要验证的资源。 如果该用户有权限返回true,否则返回false,以便在其它模块里使用这个方法来判断用户是否有权限。
至于你是不是要一次把该用户所有权限都取出来,然后相应的显示菜单了什么的。 看你的需要,加一个取指定用户全部resource方法可能较好。
这种实现的好处是设计相对简单,并在权限设置上有很大的灵活性,而且有一定的重用价值。(我们已经用在不同的项目中了)。
整个权限模块只有一个方法和其实模块有偶合,就是那个验证是否有权限的方法
boolean hasResource(String userId, String resourceId);
坏处是这种实现对数据库来说也要复用。 因为这个权限模块所对应的表结构已经定下来了。所以如果想在其它项目中用这个模块,其相应的表也得放入这个项目中(不过这几个表非常独立,不会影响太大)。
Top
3 楼ychunshui(阿水)回复于 2003-12-02 18:03:02 得分 0
有没有具体的实现,这样比较抽象.
简单的实现可不可以不要角色,即用户,用户组,资源,权限.
用户关联用户组,用户组关联权限,权限关联资源.Top




