开源技术小栈开源技术小栈
🌐 Home
⛄ 精选文章
🐜 数据库
Ⓜ️ 微服务
📺 Bilibili
🐳 Github
🎃 腾讯云社区
💫 博客园
  • 💫 Git
  • 🐜 Linux
  • 🕸️ Docker
  • 🐌 Jenkins
🌐 Home
⛄ 精选文章
🐜 数据库
Ⓜ️ 微服务
📺 Bilibili
🐳 Github
🎃 腾讯云社区
💫 博客园
  • 💫 Git
  • 🐜 Linux
  • 🕸️ Docker
  • 🐌 Jenkins
  • 队列

    • 🔷 十万个为什么?
  • Casbin

    • 🔷 快速开始
    • 🔶 工作原理
    • 🔷 Model语法策略
    • 🔶 Model高级
    • 🔷 策略高级
    • 🔶 快速开始
  • Zipkin链路追踪

    • 🔷 概述
    • 🔶 快速开始
    • 🔷 webman框架实战

原理

在 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 和 php 版本中尝试下面的 (jCasbin 和 Node-Casbin 尚不支持)操作:

# Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')

但是你应确保数组的长度大于 1,否则的话将会导致异常 。

最近更新: 2024/4/4 16:33
贡献者: Tinywan
Prev
🔷 快速开始
Next
🔷 Model语法策略