ControlProxy/access-control-template/README.md

81 lines
1.8 KiB
Markdown
Raw Normal View History

2023-11-17 13:37:42 +00:00
# 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`可对相应公钥的用户作授权。