论坛首页 Java版 Hibernate

请教权限设计中的关系问题

浏览 12452 次
该帖已经被评为精华帖
作者 正文
时间:2004-02-27
系统中有用户,角色,权限,资源。用户和角色是多对多关系,角色和权限多对多,权限和资源也是多对多的关系,这样的设计是否合理?
另外如果要加上组的概念,是否设计该变成用户和组多对多,组和角色多对多,角色权限多对多,权限,资源多对多?
感觉这么多的多对多好像不应该,请问大家该如何设计?
   
时间:2004-02-27
权限设计中有用户、组、角色、资源、权限几个对象组成,无论关系怎样复杂,最终的目的是要把用户与资源的关系描述出来,也就是最终体现在某用户对某些资源有哪些权限,用一张表来存储,包含用户ID、资源ID、权限列表,权限是相对独立的对象,比如:查询、修改、添加、删除等,而组、角色其实是为了管理、方便维护而人为产生的,最重要的是用户、资源、权限的关系。
   
0 请登录后投票
时间:2004-02-27
谢谢楼上的回答,不过用户,权限,资源也都是多对多的关系。这样是否恰当了?用户(n---m)权限(n--m)资源。
我看了本论坛的dingyd设计的一个权限系统,他里面很多都是没有关联的,是在
程序里面调用的。感觉好象没有把hibernate的威力发挥出来,
不好意思啊,dingyd老大,呵呵!其实你的代码已经让小弟收益良多,谢谢了!
   
0 请登录后投票
时间:2004-02-29
看样子似乎是比较复杂,我也没试过,不知道hibernate是否能够高效地实现这些关系,试试看好了。

我觉得也并不是在任何情况下,都要采用hibernate的各种关联,有时候还得要考虑效率的问题。比如说,一个贴子Thread,它可能有多个(几十,上百?)个回贴,这时如果采用one-to-many的话效率可能很低。
   
0 请登录后投票
时间:2004-03-03
看看appuse案例(用struts+hibernate和spring+hibernate),它基本满足一般应用的权限要求。它主要设计思路是:
[code:1]user--userole--role

role--rolepermission--permission

user--usergrouprole--role
|
group[/code:1]
如果权限需求复杂的话(如将permission在拆分为operation+resource,将resource设计成层次结构的,将role也设计成层次结构的),研究一下RBAC。
   
0 请登录后投票
时间:2004-05-20
OldWen 写道
看看appuse案例(用struts+hibernate和spring+hibernate),它基本满足一般应用的权限要求。它主要设计思路是:
[code:1]user--userole--role

role--rolepermission--permission

user--usergrouprole--role
|
group[/code:1]
如果权限需求复杂的话(如将permission在拆分为operation+resource,将resource设计成层次结构的,将role也设计成层次结构的),研究一下RBAC。


我是这样设计的:
[code:1]
group <---- operator
group <---- role
operator <---> operatorRoles <---> role
role <---> roleFunctions <---> function
[/code:1]
   
0 请登录后投票
时间:2004-05-21
权限设计还是要根据具体的项目具体对待,我做的权限设计其实只是为了学习HIBERNATE,参照POW2ACL改写的,没有在具体的项目中用过.对与简单的权限认证,可以考虑用容器自身提供的功能就可以了.
   
0 请登录后投票
时间:2004-05-21
最简单的办法就是最有效的办法! 无需去分析Hibernate 的什么关系,直接从数据库入手,JIVE 做的很好,可以下载源码来看.
   
0 请登录后投票
时间:2004-06-01
请问:“appuse案例(用struts+hibernate和spring+hibernate)”是什么啊?是开源项目吗?可是我在SF中又没有搜到!
   
0 请登录后投票
时间:2004-06-02
你可以在google里面直接搜索appfuse,另外楼主可以看一下acegi-security-0.5,这个东西是在SPRING下做的安全系统,很方便。我最近在研究,用起来感觉很爽。可以做到在不改变你原来代码的情况下,直接对方法的调用进行身份验证。
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐