企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 开始使用 创建一个Casbin决策器需要有一个模型文件和策略文件为参数: * Go * ~~~go import "github.com/casbin/casbin" e := casbin.NewEnforcer("path/to/model.conf", "path/to/policy.csv") ~~~ * Java * ~~~java import org.casbin.jcasbin.main.Enforcer; Enforcer enforcer = new Enforcer("path/to/model.conf", "path/to/policy.csv"); ~~~ * Node.js * ~~~javascript import * as casbin from 'casbin'; const enforcer = await casbin.newEnforcer('path/to/model.conf', 'path/to/policy.csv'); ~~~ * PHP * ~~~php require_once './vendor/autoload.php'; use Casbin\Enforcer; $e = new Enforcer("path/to/model.conf", "path/to/policy.csv"); ~~~ * Python * ~~~py import casbin e = casbin.Enforcer("path/to/model.conf", "path/to/policy.csv") ~~~ * Delphi * ~~~ var casbin: ICasbin; begin casbin := TCasbin.Create('path/to/model.conf', 'path/to/policy.csv'); ... end ~~~ **注意**:你也可以用DB中的策略初始化一个决策器,细节可以看 **策略存储**部分。 在访问发生之前, 在代码中添加强制挂钩: * Go * ~~~go sub := "alice" // 想要访问资源的用户。 obj := "data1" //要访问的资源。 act := "read" // 用户对资源执行的操作。 if e.Enforce(sub, obj, act) == true { // 允许alice读取data1 } else { // 拒绝请求,显示错误 } ~~~ * Java * ~~~Java String sub = "alice"; //想要访问资源的用户。 String obj = "data1"; // 要访问的资源。 String act = "read"; // 用户对资源执行的操作。 if (enforcer.enforce(sub, obj, act) == true) { // 允许alice读取data1 } else { // 拒绝请求,显示错误 } ~~~ * Node.js * ~~~javascript const sub = 'alice'; // 想要访问资源的用户。 const obj = 'data1'; // 要访问的资源。 const act = 'read'; // 用户对资源执行的操作。 if (enforcer.enforce(sub, obj, act) == true) { // 允许alice读取data1 } else { // 拒绝请求,显示错误 } ~~~ * PHP * ~~~php $sub = "alice"; // 想要访问资源的用户。 $obj = "data1"; // 要访问的资源。 $act = "read"; // 用户对资源执行的操作。 if ($e->enforce($sub, $obj, $act) === true) { // 允许alice读取data1 } else { // 拒绝请求,显示错误 } ~~~ * Python * ~~~python sub = "alice" # 想要访问资源的用户。 obj = "data1" # 要访问的资源。 act = "read" # 用户对资源执行的操作。. if e.enforce(sub, obj, act): # 允许alice读取data1 pass else: # 拒绝请求,显示错误 pass ~~~ * Delphi * ~~~delphi if casbin.enforce(['alice,data1,read']) then // Alice is super happy as she can read data1 else // Alice is sad ~~~ 除了静态策略文件之外, Casbin 还为运行时的权限管理提供 API。例如, 您可以将分配给用户的所有角色按如下所示进行: * Go * ~~~go roles := e.GetRolesForUser("alice") ~~~ * Java * ~~~java Roles roles = enforcer.getRolesForUser("alice"); ~~~ * Node.js * ~~~javascript const roles = enforcer.getRolesForUser('alice'); ~~~ * PHP * ~~~php $roles = $e->getRolesForUser("alice"); ~~~ * Python * ~~~python roles = e.get_roles_for_user("alice") ~~~ * Delphi * ~~~ delphi ~~~ 请参阅 **策略管理API** ,了解更多用途。 有关更多用法,请参阅**_test.go**文件。