[PHP-Casbin](https://github.com/php-casbin/php-casbin) 是一個強大的、高效的開源訪問控制框架,它支持基于各種訪問控制模型的權限管理。
`ABAC`是`基于屬性的訪問控制`,可以使用主體、客體或動作的屬性,而不是字符串本身來控制訪問。
ABAC的官方實例如下:
```
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = r.sub == r.obj.owner
```
這是`r.obj`類的定義:
```php
$data1 = new \stdClass();
$data1->name = 'data1';
$data1->owner = 'alice';
$data2 = new \stdClass();
$data2->name = 'data2';
$data2->owner = 'bob';
```
然后使用決策器進行決策:
```php
$e->enforce('alice', $data1, 'read'); // true
$e->enforce('alice', $data2, 'read'); // false
$e->enforce('bob', $data1, 'read'); // false
$e->enforce('bob', $data2, 'read'); // true
```