美文网首页程序员@产品企业信息化之路
大型系统后台设计——权限篇

大型系统后台设计——权限篇

作者: 童以默 | 来源:发表于2018-07-03 14:29 被阅读97次

为什么写这篇文章?

写这篇文章的目的有两个:一个原因是,由于最近将近两年都在接触大型的系统,我有幸作为一个软件实施方的一员,接触并了解了几个大型的项目,并自己也主·导设计了两款软件系统,我对于软件的后台设计有了一定程度的了解,有能力阐述清楚这个问题。另外一个原因是,曾经我作为一个软件小白,想要在网上找到相应的资料,发现,大部分的文章都来自与开发人员,他们偏向于从技术层面进行阐述,读起来晦涩难懂,很少从业务和原理上进行阐述,还有一部分文章阐述的层面较为浅显,浅尝辄止,并没有从整体到部分进行完整的阐述,我这篇文章力求简单明了,完整全面,任何人都通俗易懂。

系统后台一般包括哪些内容,有什么用处?

系统后台一般是管理者进行系统管理的一个模块。根据软件的不同用途,其管理的内容各不相同。举个简单的例子:今日头条、腾讯视频、头条号等内容平台,一般其后台都会有内容审核功能,用户账号管理、权限分配等等。GUC用户发布一篇文章,后台进行审核,通过后,方可进行展示。

我今天所阐述的系统后台,指的是更为核心的东西,是一个系统的心脏。指的是权限数据管理,这一个部分的设计最为复杂也是系统设计最难最基础的部门。

权限包括两个部分:一个是操作权限,一个是数据权限。 

操作权限又包括两个部分:一个是菜单权限,另外一个是按钮权限。

菜单权限。举个例子来说:我们使用同一个办公软件系统,你是HR,你有招聘模块的菜单,可以进行招聘相关的操作,我是财务,我有费用报销模块的菜单,而你没有。这样我们的菜单是不一定的。我们都可以使用办公软件,但是我们的职位不同,所以分配的菜单是不一样的。

按钮权限。举个例子:我们两个都是人资部门的人,你是招聘专员,我是人资经理。我们虽然都有招聘菜单,但是你没有招聘需求审批的按钮,你没有相应的权限操作,只有我可以进行招聘需求的审批。

数据权限,说起来就比较简单容易理解了,比如拿快消行业来说,我是安徽区的省区经理,你是江苏大区的省区经理,我们职位相同,我们都是省区经理,我们拥有的操作权限也是一样的,但是我们看到的数据是不一样的,我是安徽的省区经理,只能允许看到安徽省的销售数据,江苏地区的销售数据我是看不到的,同理,江苏区的省区经理也是一样的。所有这些,都是可以通过数据权限进行控制的。

怎么进行权限的控制?

我主要介绍两种常见的权限控制方法,也是比较常用的权限设计方式,一种是对于小型企业的,一般只有几百人的那种,另外一种涉及到工作流的系统产品,人数众多。两种设计方式之外还会有许多的变种,这里就不一一说了。

第一种:用户—角色—权限

用户——角色的设计方式是最为简单的设计方式。他的设计原理是:把操作权限分配给角色,如下图1,这样新增一个新的角色以后,就会给这个新增的角色分配相应的操作权限,包括操作按钮和操作菜单。

图1

上图为某公司的新增角色页面,从图中可以看到,勾选相应的菜单和按钮,则该角色就有用了菜单和按钮的操作权限,没有勾选,则没有改权限。

图2

通过部门赋予用户数据权限,如图2 。新建一个新的用户时,必须要给这个用户选择一个权限角色,同时,在授权部门模块,选择其所属的部门,部门就决定了其数据范围。通过这两个操作,一个新的用户就具备了操作权限和数据权限。

第二种:用户—职位—角色—权限

相比于第一种的权限设计方案,多用于小型系统,没有涉及到工作流的情况;第二种权限设计方案多应用于一些中大型系统中,如CRM系统、OA系统等等。第二种和第一种相比较,中间多了一层职位,设计思路也是不一样的。

第二种设计思路如下:

角色控制操作权限,和第一种一样,如果涉及到工作流,可以进行单独定义工作流角色,也可以和权限角色相同,不进行单独定义。

角色——操作权限设计

职位是增加的一层,职位与角色关联,也就是说,一个角色下面对应多个职位,一个职位只能对应一个角色,这样职位就拥有了操作权限的属性。同时,组织机构与职位关联,组织机构决定系统的数据权限。这样职位就拥有了操作权限和数据权限。

职位管理

最后在把职位挂到相应的用户,这样用户在登录该账号时,就同时拥有操作权限和数据权限。

用户—职位

这里有一点需要说明,用户和职位是一对一的关系,也就是说,一个萝卜一个坑,不可以把一个职位挂给多个用户。

这样设计有什么好处呢?

举个例子说吧:当一个员工离职了,采用第二种设计方式,只需要停用该员工的用户账号,把职位移除,如果新来一个员工替代他,只需要给新员工新建一个用户账号,同时把职位挂给他就OK了,不需要重新分配数据权限和操作权限。如果采用第一种设计方式:需要停用员工账号,新来员工开通账号需要重新分配数据权限。

再举个例子吧:当两个员工A和B进行跨部门职位调岗时,该怎么操作呢?第一种方式:A和B的职位去掉,同时对调就行或者把该部门空缺职位分配给A和B,不需要重新分配数据权限。第二种方式:A和B要同时进行数据权限的重新分配。

如果有考虑有工作流的情况,就需要考虑流程节点处理对象,可以按照工作流角色、职位和具体用户三个维度进行配置,第二种可以很好地满足,第一种就无法满足,只能按照具体人来定义和角色来处理,当一个人调岗变动时,工作流审批节点可能也要进行调整,而第二种设计方式就不需要进行调整。

此外,对于,有相应人员编制的企业来说,可以保证职位的固定,只会有用户的增减,职位可以始终保持不变,这样编制就得以控制了。

综上:如果是设计小型系统并且没有涉及到工作流的情况,第一种设计方案:用户—角色的权限设计方案比较简单;如果是中大型的系统并且涉及到工作流的情况,则第二种设计方案:用户—职位—角色 的设计方案比较好。

相关文章

  • 大型系统后台设计——权限篇

    为什么写这篇文章? 写这篇文章的目的有两个:一个原因是,由于最近将近两年都在接触大型的系统,我有幸作为一个软件实施...

  • 后台系统权限设计总结

    后台系统权限设计总结做B端后台,一个老生常谈的话题就是权限控制,如何做权限控制,初步整理一下。用户场景后台系统常常...

  • 业务后台系统之流程设计

    上周在《业务后台系统之权限设计》中总结了自己在最近一个后台业务系统项目中的后台产品设计经验,本篇继续总结完后台设计...

  • 后台系统权限设计总结

    做B端后台,一个老生常谈的话题就是权限控制,如何做权限控制,初步整理一下。 用户场景 后台系统常常都有各类用户他们...

  • 后台系统设计——角色权限

    一、前言 不论是哪种后台管理系统,“人员权限”始终是绕不开的话题。无论是移动端,PC端产品,登陆都需要一个账号。只...

  • B端系统权限设计

    做过企业端或者后台产品的童鞋,对权限设计不会陌生。权限设计是所有企业系统的基础。 企业系统中所有的功能模块都需要考...

  • Ant Design Pro开发后台管理系统(权限)

    前言 权限是后台管理系统常见的需求,后台开发必须考虑设计的模块,antd-pro给我们提供了很好的关于权限的封装,...

  • 后台系统:基于RBAC模型的权限设计

    对于业务复杂或数据庞大的系统,为了方便管理,一定要做权限设计。 权限设计是后台系统要考虑的一个授权策略问题。直白的...

  • python---数据库设计的三大范式

    一 * * * * * 项目设计理念 ① 权限设计 后台管理系统 登陆页面 (用户包括 * 管理员 超级用户) 权...

  • 手把手教你做系统权限设计,看完不要说还不会

    权限系统设计 前言 权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制...

网友评论

  • 寞苡宸:你好,可不可以将角色细分,充当职位功能?
    童以默:@寞苡宸 可以啊,那就是用户-角色-权限这个模式了,而不是用户-职位-角色-权限这个模式。两个模式各有各的好处,按照具体情况,怎么方便怎么来。
  • 大约在冬季123:@淮王鱼 工作流一般用哪个?
    童以默:@大约在冬季123 一般OA系统都有,涉及到流程数据的审批传递,可以考虑工作流
  • 2e19c1cca042:不错,菜鸟我了解了
  • yatoo_9d7e:你对这个理解的不够深入
    童以默:@yatoo_9d7e 你是技术出身吗?说的好技术啊!
    yatoo_9d7e:@淮王鱼 不敢赐教,人员,组织,角色,权限,菜单,这些关系可以根据具体组织架构来定义,数据权限要统一在bi层处理
    童以默:@yatoo_9d7e 还请赐教
  • 流歌i_i:有几个问题想请教一下。
    关于用户-职位-角色-权限,在图例里我看到你把“XX主管”“XX经理”定义为角色,那么“职位”的定义是什么?还就是为什么一个职位只能对应一个角色?
  • 一个人窝在铺头:还没没有说数据权限
    童以默:@一个人窝在铺头 在我的另一篇文章有说
  • 张未来的未来:请问第二种举例的是哪个公司的管理平台呢?
  • 61a0c1136539:一般第二种,灵活有逻辑性,功能新增只需要关联上角色就ok了,这样关联角色的职位也拥有了新增功能的权限,当然我在设计系统架构时追求简易维护和灵活使用,这样后续产品容易接手。

本文标题:大型系统后台设计——权限篇

本文链接:https://www.haomeiwen.com/subject/swzpyftx.html