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`可对相应公钥的用户作授权。
|