# 開始使用
創建一個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**文件。