跳转到主要内容

命令行工具

Casbin CLI 把 Casbin API 暴露到命令行,让你可以在 shell 里加载 model 和 policy、执行 enforce 检查以及管理 policy。已有 Go、Java、Node.js、Python、.NET 和 Rust 的实现。

安装​

Go(casbin-go-cli)​

  1. 克隆仓库:

    git clone https://github.com/apache/casbin-go-cli.git
  2. 构建 CLI:

    cd casbin-go-cli
    go build -o casbin

Rust(casbin-rust-cli)​

从 crates.io 安装​

cargo install casbin-rust-cli

从源码构建​

  1. 克隆仓库:

    git clone https://github.com/casbin-rs/casbin-rust-cli.git
  2. 以 release 优化方式构建:

    cd casbin-rust-cli
    cargo build --release

Java(casbin-java-cli)​

  1. 克隆仓库:

    git clone https://github.com/jcasbin/casbin-java-cli.git
  2. 使用 Maven 构建(JAR 文件会生成在 target 目录中):

    cd casbin-java-cli
    mvn clean install

Python(casbin-python-cli)​

  1. 克隆仓库:

    git clone https://github.com/apache/casbin-python-cli.git
  2. 安装所需依赖:

    cd casbin-python-cli
    pip install -r requirements.txt
  3. 运行 CLI:

    python -m casbin_cli.client [command] [options] [args]

.NET(casbin-dotnet-cli)​

  1. 克隆仓库:

    git clone https://github.com/casbin-net/casbin-dotnet-cli.git
  2. 构建项目:

    cd casbin-dotnet-cli
    dotnet build

用法​

选项​

选项说明必填备注
-m, --modelmodel 文件路径或 model 定义文本是用引号包裹,并用 | 作为行分隔符
-p, --policypolicy 文件路径或 policy 定义文本是用引号包裹,并用 | 作为行分隔符
-e, --enforce评估访问权限否参数用引号包裹
-ex, --enforceEx评估权限并显示所匹配的 policy否参数用引号包裹
-AF, --addFuntion注册一个自定义函数(仅 casbin-java-cli)否用引号包裹,并用 | 作为行分隔符
-ap, --addPolicy向 policy 文件追加一条 policy 规则(仅 casbin-java-cli)否参数用引号包裹
-rp, --removePolicy从 policy 文件中删除一条 policy 规则(仅 casbin-java-cli)否参数用引号包裹

快速上手​

  • 验证 Alice 是否可以读取 data1:

    ./casbin enforce -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data1" "read"

    {"allow":true,"explain":null}

    ./casbin enforce -m "[request_definition]\nr = sub, obj, act\n[policy_definition]\np = sub, obj, act\n[role_definition]\ng = _, _\n[policy_effect]\ne = some(where (p.eft == allow))\n[matchers]\nm = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act" -p "p, alice, data1, read\np, bob, data2, write\np, data2_admin, data2, read\np, data2_admin, data2, write\ng, alice, data2_admin" "alice" "data1" "read"

    {"allow":true,"explain":null}

  • 验证 Alice 是否可以写入 data2,并显示是哪条 policy 授予的权限:

    ./casbin enforceEx -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"

    {"allow":true,"explain":["data2_admin","data2","write"]}

  • 向 policy 文件添加一条新的 policy 规则(仅 casbin-java-cli):

    ./casbin addPolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"

    {"allow":true,"explain":null}

  • 从 policy 文件中删除一条 policy 规则(仅 casbin-java-cli):

    ./casbin removePolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"

    {"allow":true,"explain":null}