|
锁定老贴子 主题:请教权限设计中的关系问题
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
时间:2004-02-27
系统中有用户,角色,权限,资源。用户和角色是多对多关系,角色和权限多对多,权限和资源也是多对多的关系,这样的设计是否合理?
另外如果要加上组的概念,是否设计该变成用户和组多对多,组和角色多对多,角色权限多对多,权限,资源多对多? 感觉这么多的多对多好像不应该,请问大家该如何设计? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2004-02-27
权限设计中有用户、组、角色、资源、权限几个对象组成,无论关系怎样复杂,最终的目的是要把用户与资源的关系描述出来,也就是最终体现在某用户对某些资源有哪些权限,用一张表来存储,包含用户ID、资源ID、权限列表,权限是相对独立的对象,比如:查询、修改、添加、删除等,而组、角色其实是为了管理、方便维护而人为产生的,最重要的是用户、资源、权限的关系。
|
|
| 返回顶楼 | |
|
时间:2004-02-27
谢谢楼上的回答,不过用户,权限,资源也都是多对多的关系。这样是否恰当了?用户(n---m)权限(n--m)资源。
我看了本论坛的dingyd设计的一个权限系统,他里面很多都是没有关联的,是在 程序里面调用的。感觉好象没有把hibernate的威力发挥出来, 不好意思啊,dingyd老大,呵呵!其实你的代码已经让小弟收益良多,谢谢了! |
|
| 返回顶楼 | |
|
时间:2004-02-29
看样子似乎是比较复杂,我也没试过,不知道hibernate是否能够高效地实现这些关系,试试看好了。
我觉得也并不是在任何情况下,都要采用hibernate的各种关联,有时候还得要考虑效率的问题。比如说,一个贴子Thread,它可能有多个(几十,上百?)个回贴,这时如果采用one-to-many的话效率可能很低。 |
|
| 返回顶楼 | |
|
时间: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。 |
|
| 返回顶楼 | |
|
时间: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] |
|
| 返回顶楼 | |
|
时间:2004-05-21
权限设计还是要根据具体的项目具体对待,我做的权限设计其实只是为了学习HIBERNATE,参照POW2ACL改写的,没有在具体的项目中用过.对与简单的权限认证,可以考虑用容器自身提供的功能就可以了.
|
|
| 返回顶楼 | |
|
时间:2004-05-21
最简单的办法就是最有效的办法! 无需去分析Hibernate 的什么关系,直接从数据库入手,JIVE 做的很好,可以下载源码来看.
|
|
| 返回顶楼 | |
|
时间:2004-06-01
请问:“appuse案例(用struts+hibernate和spring+hibernate)”是什么啊?是开源项目吗?可是我在SF中又没有搜到!
|
|
| 返回顶楼 | |
|
时间:2004-06-02
你可以在google里面直接搜索appfuse,另外楼主可以看一下acegi-security-0.5,这个东西是在SPRING下做的安全系统,很方便。我最近在研究,用起来感觉很爽。可以做到在不改变你原来代码的情况下,直接对方法的调用进行身份验证。
|
|
| 返回顶楼 | |










