论坛首页 Java企业应用论坛

通用的权限模型有可能吗?

浏览 7003 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-25  
权限模型设计时,一般是用户可以是多个角色,每个角色分配一组权限,每个用户还可以分配几个额外权限。

在权限分配的页面上,一般还需要将权限按照树状的层次展现出来,如“用户管理"节点下有“创建用户”“删除用户”“修改用户” 几个权限。

然而权限对象本身是特殊的,有时权限针对页面,有时权限针对的是数据的范围。所以我考虑,是否可以把权限描述为一个接口?

class User{
  List<Role> roles;
  List<Permission> additionalPermission;
}

class Role{
  List<Permission> permissions;
}

interface Permission{
  String getName(Locale locale)
  String getDescription(Locale locale)
}

class WebPermission{
  List<Pattern> getAccessibleUrl();
}


目前在Light-Commons 的权限框架中,是使用 IUser.getPermissionKeys() 来获取用户权限key列表,这些key对应配置文件中定义的一些可访问url。但对于其他的权限逻辑无法控制。
如何才能编写一个通用的权限模型呢?

另外,我觉得一个应用所对应的权限大部分是固定的,应该由配置文件读取,而不是由数据库读取。但是有些系统权限也需要是动态的,比如创建了一个部门后,也就创建了这个部门的一些操作权限,可以将这些权限分配给某个人。

另外,权限里面还有一种特殊的类型,比如“操作自己的数据”,“操作自己所在部门的数据”,“操作自己下属的数据”,这些权限不是具体到控制对象的,而是表达一种与控制对象的关联关系。一般来说都是硬编码实现的。可复用很难。

基本上,对于权限的逻辑部分,我认为复用很难,但是整个权限部分整理一个模板,还是有可能的。至少页面层的模板应该是可以的,如创建用户页面,权限分配页面。如:但需要后台的权限相关对象匹配。




   发表时间:2008-08-26  
spring security 不就是通用的吗
0 请登录后投票
   发表时间:2008-08-26  
acegi  研究研究这个
0 请登录后投票
   发表时间:2008-08-26  
权限一般分两种,系统权限和业务权限:
系统权限一般指对系统资源的操作,板块页面按钮、可见不可见,链接等等,这部分可以做成可配置的,可复用性一般都比较高。
业务权限基本上和实际情况挂钩,很多情况体现为对表的行集权限,这部分一般很难做到通用设置。
所以,做通用权限管理的话,只要能够实现系统权限基本上就可以了
0 请登录后投票
   发表时间:2008-08-28  
麻烦楼上具体说说,可以看看这里比较有针对性
http://www.iteye.com/topic/231845
0 请登录后投票
   发表时间:2008-09-24  
通用的权限管理有很多现成的产品的吧,比如IBM的AM,CA的website等等,可以拿来参考下他们的设计思想的吧。
0 请登录后投票
   发表时间:2008-09-24  
安全性就参考Java的,包含验证和授权两部分:
验证通过的Subject,可以doPrivileged(XXXSceurity接口实现),只不过Java用policy文件维护,你可以放在数据库里
1 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics