搜尋
首頁web前端js教程了解Node.js Casbin
了解Node.js CasbinAug 19, 2020 am 10:16 AM
node.js

了解Node.js Casbin

【影片教學推薦:nodejs 教學

##概述

# #Casbin 是一個強大的、高效的開源存取控制框架,其權限管理機制支援多種存取控制模型。

  • Casbin 是什麼?
  • Casbin 可以:

#支援自訂請求的格式,預設的請求格式為{subject, object, action}。 具有存取控制模型model和策略policy兩個核心概念。

支援RBAC中的多層角色繼承,不只主體可以有角色,資源也可以有角色。
  • 支援超級用戶,如 root 或 Administrator,超級用戶可以不受授權策略的約束存取任意資源。
  • 支援多種內建的運算符,如keyMatch,方便對路徑式的資源進行管理,如/foo/bar 可以對應到/foo*

Casbin 不能:

身份認證authentication(即驗證使用者的使用者名稱、密碼),casbin只負責存取控制。應該有其他專門的組件負責身分認證,然後由casbin進行存取控制,二者是相互配合的關係。

管理使用者清單或角色清單。 Casbin 認為由專案本身來管理使用者、角色清單更為合適, 使用者通常有他們的密碼,但是 Casbin 的設計想法並不是把它當作一個儲存密碼的容器。而是儲存RBAC方案中使用者和角色之間的映射關係。

文件casbin.org/docs/en/overview

##安裝

# NPMnpm install casbin --save# Yarnyarn add casbin

#開始吧

建立Casbin enforcer 需要一個模型檔案與策略檔案作為參數:
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 以取得更多使用方式。

    工作原理
  • 在Casbin 中, 存取控制模型被抽象化為基於PERM (Policy, Effect, Request, Matcher) 的一個文件。因此,切換或升級專案的授權機制與修改配置一樣簡單。您可以透過組合可用的模型來自訂您自己的存取控制模型。例如,您可以在一個model中獲得RBAC角色和ABAC屬性,並共用一組policy規則。
  • Casbin中最基本、最簡單的model是ACL。 ACL中的model CONF為:
# 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可以讀取data1

bob可以編寫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中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

怎么使用pkg将Node.js项目打包为可执行文件?怎么使用pkg将Node.js项目打包为可执行文件?Jul 26, 2022 pm 07:33 PM

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

一文解析package.json和package-lock.json一文解析package.json和package-lock.jsonSep 01, 2022 pm 08:02 PM

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

分享一个Nodejs web框架:Fastify分享一个Nodejs web框架:FastifyAug 04, 2022 pm 09:23 PM

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

手把手带你使用Node.js和adb开发一个手机备份小工具手把手带你使用Node.js和adb开发一个手机备份小工具Apr 14, 2022 pm 09:06 PM

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

图文详解node.js如何构建web服务器图文详解node.js如何构建web服务器Aug 08, 2022 am 10:27 AM

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具