|
|
|
|
@ -35,7 +35,7 @@ app:vbase:role:admin → 第4层 (偶数) - 实例
|
|
|
|
|
### 2.2 偶数层(实例)
|
|
|
|
|
|
|
|
|
|
| level | 二进制 | 含义 |
|
|
|
|
|
| ----- | ------ | ---------------------- |
|
|
|
|
|
| ----- | ------ | ---------------------------------- |
|
|
|
|
|
| 0 | 000 | 无权限 |
|
|
|
|
|
| 2 | 010 | 读取 |
|
|
|
|
|
| 4 | 100 | 写入(修改,不能删除) |
|
|
|
|
|
@ -49,7 +49,7 @@ app:vbase:role:admin → 第4层 (偶数) - 实例
|
|
|
|
|
### 3.1 层级与权限对应
|
|
|
|
|
|
|
|
|
|
| 权限 | level | 检查层级 | 说明 |
|
|
|
|
|
|------|-------|----------|------|
|
|
|
|
|
| ---- | ----- | -------- | -------------- |
|
|
|
|
|
| 创建 | 1 | 奇数层 | 检查资源类型层 |
|
|
|
|
|
| 读取 | 2 | 偶数层 | 检查实例层 |
|
|
|
|
|
| 写入 | 4 | 偶数层 | 检查实例层 |
|
|
|
|
|
@ -284,7 +284,7 @@ func init() {
|
|
|
|
|
### 6.4 动态解析规则
|
|
|
|
|
|
|
|
|
|
| 语法 | 来源 | 示例 |
|
|
|
|
|
|------|------|------|
|
|
|
|
|
| -------------- | ---------- | ---------------- |
|
|
|
|
|
| `{key}` | path 参数 | `{appID}` |
|
|
|
|
|
| `{key@query}` | query 参数 | `{appID@query}` |
|
|
|
|
|
| `{key@header}` | header | `{appID@header}` |
|
|
|
|
|
@ -297,6 +297,7 @@ func init() {
|
|
|
|
|
### 7.1 业务调用 vs 管理端
|
|
|
|
|
|
|
|
|
|
此接口是**业务层**调用,用于:
|
|
|
|
|
|
|
|
|
|
- 创建资源时自动授予权限
|
|
|
|
|
- 业务逻辑中检查权限
|
|
|
|
|
|
|
|
|
|
@ -322,6 +323,7 @@ func CreateApp(x *vigo.X, req *CreateAppReq) (*AppResp, error) {
|
|
|
|
|
对于资源列表(List)或搜索接口,推荐以下设计模式:
|
|
|
|
|
|
|
|
|
|
1. **全量管理接口**(如后台管理系统):
|
|
|
|
|
|
|
|
|
|
- 使用 `PermAdmin("*")` 或 `PermAdmin("app:*")`。
|
|
|
|
|
- 这类接口返回所有数据,必须严格控制权限。
|
|
|
|
|
|
|
|
|
|
|