forked from iod/ControlProxy
81 lines
1.8 KiB
Markdown
81 lines
1.8 KiB
Markdown
# access-control-template
|
||
|
||
## 构建配置
|
||
|
||
1.在build.gradle中,增加`copyAccessControl`
|
||
|
||
```gradle
|
||
task copyAccessControl(type: Copy) {
|
||
from "../access-control-template/yjs"
|
||
into "./build/output/"
|
||
}
|
||
```
|
||
|
||
2. 在`buildZip`任务中添加依赖:
|
||
|
||
```gradle
|
||
task buildZip(type: Zip, dependsOn: [...,"copyAccessControl"]) {
|
||
...
|
||
```
|
||
3. 在`main.yjs`中添加RocksDB权限。
|
||
`@Permission("RocksDB")`
|
||
|
||
## ABAC.yjs的使用方式
|
||
|
||
1.在main.yjs中增加`import`语句,并在`onCreate`方法中,添加初始化调用。
|
||
|
||
```javascript
|
||
import "actemplate/ABAC.yjs";
|
||
|
||
function onCreate(arg) {
|
||
...
|
||
initABAC(requester);
|
||
}
|
||
```
|
||
|
||
2.针对需要访问控制的函数,使用`@Access`注解
|
||
|
||
```javascript
|
||
@Access({"ACFunction":"accept"})
|
||
export function xxx
|
||
```
|
||
|
||
3.初始化权限。
|
||
|
||
初始状态下,仅`owner`(启动者) 拥有全部权限。
|
||
通过调用`addPermission`和`removePermission`可对相应公钥的用户作授权。
|
||
|
||
## RBAC.yjs的使用方式
|
||
|
||
1.配置角色-权限。在`main.yjs` 下创建 `role.json`。
|
||
参考role.template.json。例如以下配置文件定义了两种角色`userAdmin`和`authorizedUser`。
|
||
启动者自动默认为超级管理员,有全部权限。
|
||
```json
|
||
{
|
||
"userAdmin": ["addRole","removeRole"],
|
||
"authorizedUser": ["hello"]
|
||
}
|
||
```
|
||
|
||
|
||
2.在main.yjs中增加`import`语句,并在`onCreate`方法中,添加初始化调用。
|
||
|
||
```javascript
|
||
import "actemplate/RBAC.yjs";
|
||
|
||
function onCreate(arg) {
|
||
...
|
||
initRBAC(requester, Global.Resources.loadAsString("/role.json"));
|
||
}
|
||
```
|
||
|
||
2.针对需要访问控制的函数,使用`@Access`注解
|
||
用法同ABAC。
|
||
```javascript
|
||
@Access({"ACFunction":"accept"})
|
||
export function xxx
|
||
```
|
||
|
||
3.初始化权限。
|
||
初始状态下,仅`owner`(启动者) 拥有全部权限。
|
||
通过调用`addRole`和`removeRole`可对相应公钥的用户作授权。 |