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

权限模型设计时,一般是用户可以是多个角色,每个角色分配一组权限,每个用户还可以分配几个额外权限。

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

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

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。但对于其他的权限逻辑无法控制。
如何才能编写一个通用的权限模型呢?

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

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

基本上,对于权限的逻辑部分,我认为复用很难,但是整个权限部分整理一个模板,还是有可能的。至少页面层的模板应该是可以的,如创建用户页面,权限分配页面。如:但需要后台的权限相关对象匹配。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值