基于Neo4j的权限控制系统Demo
1 基本介绍
基于Neo4j
与MySQL
双数据库的权限控制系统,综合Neo4j
与MySQL
的优点,强强联合,将复杂的权限查询交给Neo4j来完成,补充MySQL在关系查询上面的弱势,支持树形维度,拥有父维度就是拥有了该维度的所有子维度。
支持多种鉴权模式:
宽松:只要能拉上一点儿关系用户就可以看,适合对权限不敏感的地方;
严格:要求用户有业务数据必须的维度,适合于对权限敏感的地方。
自定义:待实现。
基本原理是用户绑定多个维度,业务数据也会绑定多个维度,然后根据不同的权限要求获取到可见的数据。
1 | (用户1)->(维度1)<-(业务数据1) |
环境:SpringBoot
,Mybatis
,MySQL
,Neo4j
。
Neo4j管理页面:http://localhost:7474/browser/
2 组成部分
权限管理Demo分为4个部分:维度管理、业务数据、用户权限、鉴权结果
2.1 维度管理
维度管理页面可以新增维度,支持散点型和树形结构。
新增页面,添加维度名称,维度类型,父维度,点击确定即可新增一条数据进Neo4j
2.2 业务数据
新增一条业务数据,可以选择绑定一些需要的维度值,选择完成之后点击保存即可。
2.3 用户权限
在用户权限新增页面可以添加用户权限,需要填写用户名和一些用户必要的维度信息。
2.4 鉴权结果
鉴权结果演示页面是模拟用户权限查询,选择不同的用户,列表显示根据该用户权限所显示的数据。
以下图片演示了存在父子关系时的鉴权结果,拥有湖北的可以看到武汉的数据。