【影片教學推薦:nodejs 教學 】
# #Casbin 是一個強大的、高效的開源存取控制框架,其權限管理機制支援多種存取控制模型。
#支援自訂請求的格式,預設的請求格式為{subject, object, action}。 具有存取控制模型model和策略policy兩個核心概念。
支援RBAC中的多層角色繼承,不只主體可以有角色,資源也可以有角色。##安裝
# NPMnpm install casbin --save# Yarnyarn add casbin
#開始吧
import { newEnforcer } from 'casbin';const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');您也可以用DB 而不是檔案中的策略來初始化enforcer,詳情請參閱適配器。
const sub = 'alice'; // 想要访问资源的用户。const obj = 'data1'; // 将要访问的资源。const act = 'read'; // 用户对资源执行的操作。const res = await enforcer.enforce(sub, obj, act);if (res) { // 允许 alice 读取数据1} else { // 拒绝请求,显示错误}
node-casbin
還提供了在執行時間進行權限管理的API,例如,您可以獲得以下指派給使用者的所有角色:const roles = await enforcer.getRolesForUser('alice');請參閱Management API and RBAC API 以取得更多使用方式。
# Request definition[request_definition]r = sub, obj, act # Policy definition[policy_definition]p = sub, obj, act # Policy effect[policy_effect]e = some(where (p.eft == allow))# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
ACL model的範例policy如下:
p, alice, data1, read p, bob, data2, write
這表示:
alice可以讀取data1bob可以編寫data2# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj \ && r.act == p.act此外,對於ABAC,您在可以在Casbin golang 版本中嘗試下面的(jCasbin 和Node-Casbin 尚不支援)操作:###
# Matchers[matchers]m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')###但是你應確保陣列的長度大於###1###,否則的話將會導致panic 。 ######對於更多操作,你可以查看 govaluate。 ######更多程式相關知識,可存取:###程式設計入門###! ! ###
以上是了解Node.js Casbin的詳細內容。更多資訊請關注PHP中文網其他相關文章!