摘要:建模權限管理系統對于操作角色和資源有條關系分別是如果對應的操作權限不存在表示沒有權限這里為的資源有兩條操作權限記錄分別對應這樣我們就可以定義具有某個角色的用戶在指定的資源上擁有什么權限這種判斷來達到控制用戶對資源的訪問節點關系創建創
建模RBAC權限管理系統
對于CRUD操作, 角色和資源有4條關系. 分別是CREATE,UPDATE,READ,DELETE. 如果對應的操作權限不存在, 表示沒有權限.
這里ID為 c508b480-082e-11e8-9f0c-b8e8563f0d3a的資源有兩條操作權限記錄(分別對應READ, CREATE). 這樣我們就可以定義具有某個角色的用戶在指定的資源上擁有什么權限這種判斷, 來達到控制用戶對資源的訪問.
Cypher 節點關系創建// 創建角色(管理員,運維,普通用戶) CREATE (:Role {name: "Operator"}),(:Role {name: "Admin"}),(:Role {name: "User"}); // 創建資源節點 CREATE (resource:Resource {path: "/", name: "根目錄"}) RETURN resource; // 普通用戶在資源 / 上有, READ, CREATE權限 MATCH (role:Role {name: "User"}), (resource:Resource {path: "/"}) CREATE (role)-[op:READ {created_at: timestamp()}]->(resource); MATCH (role:Role {name: "User"}), (resource:Resource {path: "/"}) CREATE (role)-[op:CREATE {created_at: timestamp()}]->(resource); // 查詢一個用戶在某個資源山的操作權限列表 MATCH (u:User {name: "測試用戶"})-[r:HAS_ROLE]->(role:Role {name: "User"})-[op]->(resource) WHERE u.roleId = role.uuid RETURN u.name,op.name, resource.path;抽象表達
在實際的查詢需要把用戶(u), 角色(r), 資源(s)參數化. 我們用一個函數來表達
$$P = f(u, r, s)$$
P為具有某個角色(r)的用戶(u)在資源s上的權限集合.Cypher 查詢語句
// 權限查詢 MATCH (u:User) -[:HAS_ROLE]->(r:Role {name: "User"}) -[op]->(resource:Resource {path: "/"}) RETURN u.uuid as user_id, r.name as role_name, resource.path as resource_path, type(op) as operation;
在IDEA中的Neo4j插件, 支持單一語句執行(在.cypher文件中可以保持多條Cypher查詢語句, 點擊一條語句會有綠色的框, 然后在點擊執行按鈕會執行這條被選中的Cypher語句).
在Neo4j Browser中的效果
參考資料RBAC權限管理模型
RBAC for a B2B Saas platform
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17684.html
摘要:近來部門接到一個外包項目,是基于現有的系統做一個知識文檔庫,類似于百度網盤一樣的功能,只是在角色和權限上與網盤不同,這個項目我們部門稱為,,難點就在于文件的權限管理。 ??近來部門接到一個外包項目,是基于現有的系統做一個知識文檔庫,類似于百度網盤一樣的功能,只是在角色和權限上與網盤不同,這個項目我們部門稱為KM,Knowledge Manager ,難點就在于文件的權限管理。 ??以下...
摘要:數據庫設計的三大范式確保每列的原子性如果每列都是不可再分的最小單元信息,則滿足第一范式,比如下圖中,地址是由國家和城市組成的,顯然可以繼續在拆分成兩個列,國家和城市,是不滿足第一范式的,需要將地址列差分成國家和城市兩個列。 showImg(https://segmentfault.com/img/remote/1460000018997429?w=1100&h=546); 閱讀原文 ...
閱讀 1437·2021-11-25 09:43
閱讀 2580·2021-09-24 10:30
閱讀 3659·2021-09-06 15:02
閱讀 3593·2019-08-30 15:55
閱讀 3300·2019-08-30 15:53
閱讀 1693·2019-08-30 15:52
閱讀 2142·2019-08-30 14:21
閱讀 2010·2019-08-30 13:55