基于Neo4j的权限控制系统

基于Neo4j的权限控制系统Demo

1 基本介绍

基于Neo4jMySQL双数据库的权限控制系统,综合Neo4jMySQL的优点,强强联合,将复杂的权限查询交给Neo4j来完成,补充MySQL在关系查询上面的弱势,支持树形维度,拥有父维度就是拥有了该维度的所有子维度。

支持多种鉴权模式:

  1. 宽松:只要能拉上一点儿关系用户就可以看,适合对权限不敏感的地方;

  2. 严格:要求用户有业务数据必须的维度,适合于对权限敏感的地方。

  3. 自定义:待实现。

基本原理是用户绑定多个维度,业务数据也会绑定多个维度,然后根据不同的权限要求获取到可见的数据。

1
2
3
4
(用户1)->(维度1)<-(业务数据1)
(用户1)->(维度2)<-(业务数据1)
(用户2)->(维度1)<-(业务数据2)
(用户2)->(维度2)

环境:SpringBootMybatisMySQLNeo4j

Neo4j管理页面:http://localhost:7474/browser/

图数据库关系

2 组成部分

权限管理Demo分为4个部分:维度管理、业务数据、用户权限、鉴权结果

权限管理

2.1 维度管理

维度管理页面可以新增维度,支持散点型和树形结构。

维度管理页面

新增页面,添加维度名称,维度类型,父维度,点击确定即可新增一条数据进Neo4j

新增维度

2.2 业务数据

页数数据管理页面

新增一条业务数据,可以选择绑定一些需要的维度值,选择完成之后点击保存即可。

新增业务数据页面

2.3 用户权限

用户权限页面

在用户权限新增页面可以添加用户权限,需要填写用户名和一些用户必要的维度信息。

用户权限新增页面

2.4 鉴权结果

鉴权结果演示页面是模拟用户权限查询,选择不同的用户,列表显示根据该用户权限所显示的数据。

选择用户

选择鉴权模式

以下图片演示了存在父子关系时的鉴权结果,拥有湖北的可以看到武汉的数据。

鉴权效果演示

-------------本文结束感谢您的阅读-------------