最近看到各种关于权限的文章,以及权限的设计,有很多优秀的设计。
在我之前的工作中,也有去做权限设计的工作,最初的时候,就把权限规划为标准的 用户-角色-操作三级模式,相信这也是很多权限表设计者的基本结构。
一般情况下,这中简单的设计表面上其实只能满足一部分需求,
较复杂的需求,例如:我们的应用中有个消息中心,想实现每个人可以选择自己希望看到的信息,这时你会怎么做?
可能的方案,有人会说这是数据权限,在权限设计时考虑数据的权限是一种方案,这够通用吗?
另外的方案,如单独设计消息中心的表结构及与用户的关系表。
由于我们的权限菜单的实现是基于[插件]的,我最终采用的方案是-[定制插件引擎],不知道各位在自己的系统中是否有插件的概念,或者是相应的功能?
使用插件引擎+权限操作,可以顺利的完成上诉需求。
我们要做的工作:
第一步:为消息建立对应的权限操作,权限操作指向插件,用户获取特定消息的插件
第二步:为消息制作一个消息引擎,使用用户的权限,为用户获取各类消息
至于用户看到哪些消息,可以完美的使用通用的权限分配功能。
可能各位对插件怎么实现感兴趣,我请关注一点,我在系统中仅使用了最基本的权限功能,完成了消息定制。
按照上面的思路,我们可以实现所谓的数据权限,甚至看上去不太像权限的功能,比如菜单,应用功能,设置数据展示,只要你实现相应的处理引擎。
在这之后,我已不在对我们的权限子系统做更改,因为到此他已经能够满足我的所有需求。
我们要做的仅仅是:
设计相应的合理的界面来实现权限的分配功能(VIEW)。
实现需要的插件引擎来完成权限分配后的实现。
实现插件完成插件引擎分配的任务。
权限,并不需要如此复杂的设计。