JiveJdon Community Forums
在线76人   首页   主题总表   培训咨询   精华   查搜   注册    登陆
首页 » 论坛 » 项目工程开发经验谈
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 0 回复 / 1
 发表新帖子   回复该主题贴
hainiao1979

悄悄话
发表文章: 5
注册时间: 2003年08月20日 17:50
关于“用户权限控制”大讨论的读后感与自己的一点想法。 2003年08月24日 23:09 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
首先向斑竹致歉,为了引起大家的关注,新开了个帖子:-)
在权限系统中,user不用详细描述了,基本是通用的,
role可以理解为是岗位,举个软件公司的例子,开发部经理和软件部经理的role是一样的,role直观上理解是职权的意思,可以把role做成一颗树,表达一种职权领导关系,即父role直接领导子role,所以上面的例子,总经理这个role应该是root,role与user是多对多的关系。(一个人可以身兼数职)。
group可以理解为是组织机构,还是上面的例子,软件公司下面有开发部和工程部,可以把group做成一颗树,表达一种组织机构隶属关系,group与user也是多对多的关系(符合国情:-)....)
role与group的引入只是说明user与user之间的两种系统中最常见的关系。
一个复杂的权限控制可能是很一个复杂的策略,不能通过单单对角色或者group的授权来完成,应该是一个if..else..的过程,输入参数有which(实例)的id和ower_user_id(which的creator),当前的用户id,返回结果是boolean,决定who(当前的用户)对当前的which是否有how的权限。在策略执行的过程当中,会根据输入参数以及上面提到的人和人之间的最基本的关系:role和group来进行一系列的判断,当然在策略执行过程当中还会设计到业务逻辑方面的信息,比如针对某一个what的数据(what是一类数据,如订单的所有数据),可能会根据某一些条件,在策略执行过程中分别选择不同的流程分支,如2000前的订单数据和之后的数据有着不同的权限控制策略,需要在策略执行过程当中进行分支处理,这样其实也就解决了when(工作流)的问题,因为when的区分最终都会体现在which的具体数据中的,比如领导签字前和领导签字后的数据。
实施:
用关系数据库表达如下:
groups:groupid pargroupid groupname
roles:roleid superroleid rolename
users: userid username
group_user : groupid userid
role_user : roleid userid
在what的角度定义策略执行脚本,拿order为例子:
if (order.ordertime > 2000.09.08) {
if (owner_user_id.groupid == 3) {
.....
return true;
}
else {
.....
return false;
}
}
else
{
.....
return false;
}
存在的问题:没有java好像没有发现有类似delphi中的dreamer script editor这样强大的控件:-)
以上只是个人想法,欢迎大家交流和批评指正。
这个主题有 0 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam