后台管理系统也需要微服务化

痛点一:庞大的后台管理系统

任何一个公司的系统总是免不了需要很多后台功能,随着业务的发展,营销活动管理后台,短信模板后台,网站内容管理后台…最后会变成一个异常庞大而难以维护的系统。往往光菜单就有几十上百个。每次修改跟新增一个简单的功能都是一场灾难。

痛点二:各自独立的后台管理系统

如果公司内部有多条产品线,每个产品线都有自己的后台,往往都各自维护着各自的后台权限体系,这样导致每个人要记住大量的账号密码。如果公司来了新领导,光开通账号就要好几天。

针对上述两个问题,自然而然的会想到,我们首先需要把后台管理系统拆成多个子系统,但是我们不需要维护多套用户与权限体系,此时我们需要一个单点登录系统来解决问题。该系统应该提供统一的登录与系统导航页面,统一的身份认证、以及统一的账户管理和权限管理。


我们把该系统分为三大模块

管理员模块:账号,角色,权限分配,部门信息

用户模块:统一的登录页面,统一的系统导航页,统一的会话管理

认证模块:提供认证的客户端以及认证的接口

管理员模块

关于基本的后台权限管理功能,有大量的开源系统可以借鉴。这里只强调几个重点:

1.管理员的分级管理。

如果需要集成的系统比较少,涉及到的用户不多,那么可以只设置一个超级管理员,该管理员负责所有的账号,角色,以及权限分配。如果需要集成几十个系统,涉及到的用户很多,则必须考虑设置两种管理员,超级管理员和普通管理员,普通管理员也具备创建账号与分配权限的功能,但是普通管理员只能分配自己所拥有的权限。例如我们有一个后台坐席系统,坐席人员有上百人,那么我们应该为坐席管理员增加一个普通管理员的权限,让他自己维护坐席人员的账号和权限。

2.管理员账号与用户账号的分开管理。可以考虑分开两张表管理或者加一个标志位。

3.权限的粒度

  • 3.1 页面元素权限菜单级别的权限一般跟角色绑定,在后台可以为某一个角色分配菜单以及按钮的权限。需要子系统读取认证接口展示菜单项。

  • 3.2 数据权限数据权限一般跟部门挂钩,但是必须子系统在代码级别支持。

  • 3.3 接口权限如果子系统采用的是前后端分离的架构,那么除了菜单层面需要限制以外,接口层面也需要进行权限管理。

  • 3.4 其他权限假如子系统是一个数据库查询系统,某个用户可以访问哪个数据库表,这种权限的维护放到子系统自己维护。

4.角色-用户反查