Skip to content

Commit 34c5b28

Browse files
committed
doc(access): 增加权限实现原理描述
1 parent ff23f33 commit 34c5b28

File tree

5 files changed

+19
-4
lines changed

5 files changed

+19
-4
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
创建后 执行 demo/todo/tests 下的 *_test.go 访问测试
1414

1515

16+
# 使用指南
17+
暂参考demo目录下的todo
18+
1619
## 文档参考
1720
1. [Get开放查询](./doc/query.md)
1821
2. [非开放请求](./doc/action.md)

README.zh-CN.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
创建后 执行 demo/todo/tests 下的 *_test.go 访问测试
1414

1515

16+
# 使用指南
17+
暂参考demo目录下的todo
18+
1619
## 文档参考
1720
1. [Get开放查询](./doc/query.md)
1821
2. [非开放请求](./doc/action.md)

doc/access.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# 权限控制
22

3+
## 实现原理
4+
1. 对于query(GET开放查询)和action(非开放操作)的每一个节点, 都拥有一个@role属性, 如果访问者未传递, 则需要根据用户类型和表名返回一个默认值;如果已传递, 则需要判断当前用户时候拥有该角色,这点适用于一个应用中具有多种角色用户的场景
5+
> 参考 todo 中 access 的 Role
6+
7+
2. 需要在数据库中_access定义表对应操作的可访问角色列表, 符合的则通过, 不符合的则直接返回
8+
3. 行级数据则需要配置 根据请求角色、用户id、表来返回一个where条件
9+
> 参考 todo 中 access 的 AccessCondition
10+
11+
312
##
413
- get 操作只能访问access中定义的表
514
- 其他操作需和request中定义的结构一致方可访问

doc/roadmap.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
- [x] 增加 设置 rowKey 生成 (id生成)
1313
- [x] 新增多个表时, structures 中 update可引用其他边的字段 (例如新建角色,并使用新增的id 设置给权限列表中)
1414
- [x] 批量修改(统一设置模式+单个设置模式)、批量删除
15-
- [ ] request的version设置
15+
- [x] request的version设置
1616
- [ ] ...
1717

1818
## [ ] 摸石头 阶段

query/query.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,11 @@ func (q *Query) Result() (g.Map, error) {
129129
return nil, q.rootNode.err
130130
}
131131

132-
resultMap := g.Map{}
132+
ret := g.Map{}
133133
for k, node := range q.rootNode.children {
134-
resultMap[k] = node.err
134+
ret[k] = node.err
135135
}
136-
return resultMap, err
136+
return ret, err
137137
}
138138

139139
g.Log().Debugf(q.ctx, "【query】 ^=======================^")

0 commit comments

Comments
 (0)