需求
对于公司内部业务系统,最基本的功能就是部门管理、用户管理、角色管理、权限管理、登陆功能。但是公司内部系统一般情况下,不止是一个(如果是一个那就是巨无霸,就面临着被拆分,也会遇到我们后面要讨论的问题)。那么多个系统,面对上面的功能我们需要开发多套吗?这是个问题值得思考。
需求分析与解决方案
面对上述的需求,对于程序员来讲,只是一套代码到处复制而已,这样就可以搞定问题。如果在上面的需求再增加一点,即是希望用户登陆一个系统之后,也能访问第二个系统,那如何解决呢?那就是单点登陆。那用户的权限呢?各系统管理各自的权限,还是集中授权?第二种更简单一点。比如最简单就是新入职的员工,开账号,开权限,要找各个部门的相关人员。这是一件很麻烦的事情。
单点登录
关于这个我就不再介绍了,我的博客相关文章已介绍了。
集中授权
首先我把我所理解的集中授权作个如下定义,以免后文出现歧义。集中授权,就是给用户开权限无需进入多个系统,只需使用一个权限管理系统。集中授权的体现,就是这个同时管理多个系统权限的权限管理系统。它需要完成除登陆之外的所有需求。这样我们就完成了部门、用户、角色、权限的统一管理。
如何集成
我们的一个个业务系统构建之后,如何与权限管理系统、单点登陆系统进行集成?一般的作法是将业务系统的菜单,按钮等之合称为之资源,通过菜单的形式录入权限管理系统(我称它为挂菜单)。各个业务系统集成单点登陆,通过权限管系统提供认证成功用户的权限,即完成整个系统的集成。
落地
jeesite是一个开源后台管理系统,它提供了很多的功能。在此只需要它权限管理部分即sys部分,我将其独立摘出来作为一个系统,它提供了部门、用户、角色、权限、资源管理(挂菜单)等功能。对业务系统提供dubbo服务完成用户权限的加载。单点登陆使用的是cas 。业务系统权限管理使用 shiro框架,单点登陆集成cas,用户认证成功权限获取通过dubbo服务。具体的可参考我的github上的项目jeesite-ex这个项目。