Skip to content

Commit 03d8bdb

Browse files
committed
update docs
1 parent ee41cf3 commit 03d8bdb

File tree

9 files changed

+37
-133
lines changed

9 files changed

+37
-133
lines changed

docs/.vuepress/sidebar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const mySidebar: ThemeSidebarMulti = {
4040
{ text: 'JWT', link: 'jwt' },
4141
{ text: 'RBAC', link: 'RBAC' },
4242
{ text: 'OAuth 2.0', link: 'oauth2' },
43-
{ text: '数据规则', link: '/planet', icon: 'fluent-color:video-16' },
43+
{ text: '数据权限', link: '/planet', icon: 'fluent-color:video-16' },
4444
{ text: '代码生成', link: 'code-generation' },
4545
{ text: '跨域', link: 'CORS' },
4646
{ text: '事务', link: 'transaction' },

docs/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ config:
3232
- title: JWT
3333
icon: 🔏
3434
details: 带有缓存和白名单的 JWT 授权中间件
35-
- title: RBAC
35+
- title: 权限管理
3636
icon: 🛠️
37-
details: 提供 Casbin、Role-Menu 两种 RBAC 方案
37+
details: RBAC 解决方案和十分高级的数据权限
3838
- title: 代码生成
3939
icon: ⚙️
4040
details: 内置代码自动生成,告别通用代码频繁 cv

docs/backend/reference/RBAC.md

Lines changed: 12 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,19 @@
22
title: RBAC
33
---
44

5-
我们通过自定义依赖组件,实现了 RBAC 的轻松集成,在 Java 或其他语言中,常见的方式可能是注解,但在 FastAPI 中,Depends
6-
是它的亮点,也是核心
5+
我们通过自定义依赖组件,实现了 RBAC 的轻松集成,它可以通过 FastAPI Depends 轻松集成
76

8-
## RBAC
9-
10-
fba 内置了两种解决方案,分别为【角色菜单】、【Casbin】
11-
12-
::: tip
13-
fba 中默认使用【Casbin】进行鉴权,管理员用户不受控,默认拥有所有访问权限
7+
::: warning
8+
自 fba `v1.1.2` 版本起,开始使用【角色菜单】作为默认 RBAC 鉴权,Casbin 将作为外置插件进行分发
149
:::
1510

16-
### 角色菜单
17-
18-
此方案是各类语言 web 开发中比较常见的解决方案,它可以设置按钮级别的控制规则
11+
## 角色菜单
1912

20-
要想实现此 RBAC 鉴权,需要修改以下相关配置
13+
要想实现此 RBAC 鉴权,需要进行以下配置
2114

2215
::: steps
2316

24-
1. 更新 RBAC 鉴权配置
25-
26-
`core/conf.py` 文件中找到以下配置,并更新 `RBAC_ROLE_MENU_MODE``True`
27-
28-
```py
29-
# Permission (RBAC)
30-
RBAC_ROLE_MENU_MODE: bool = False
31-
```
32-
33-
2. 添加接口依赖
17+
1. 添加接口依赖
3418

3519
只有在接口中添加以下依赖时,才能自动调用此鉴权方式
3620

@@ -45,100 +29,22 @@ fba 中默认使用【Casbin】进行鉴权,管理员用户不受控,默认
4529
)
4630
```
4731

48-
3. 在系统菜单中添加权限标识
32+
2. 在系统菜单中添加权限标识
4933

50-
我们在接口依赖中可以看到 `sys:api:add` 之类的值,这些值正是对应着菜单中的权限标识,
51-
只有它们完全一致,并且用户拥有对应的菜单时,才会获得相应的操作权限
34+
我们在接口依赖中可以看到 `sys:api:add` 之类的值,这些值正是对应着菜单中的权限标识,只有它们完全一致,并且用户拥有对应的菜单时,才可以获得相应的操作权限
5235

5336
:::
5437

55-
### Casbin
56-
57-
此方案是 Go 语言中比较流行的解决方案,它非常灵活,可以通过模型定义多种控制规则
58-
59-
要想使用此 RBAC 鉴权,需要学习以下几点
60-
61-
::: steps
62-
63-
1. 了解 Casbin
64-
65-
我们在最初架构设计时,参考了 go-admin,gin-vue-admin... 等优秀的开源项目,同时引入了 Casbin,它在众多 python web
66-
开源项目中可能是极为罕见的,并且,它的学习成本非常高,如果你对此感兴趣,可以通过 [Casbin 官网](https://casbin.org/docs/get-started)
67-
进行学习,另外,可参考视频教程 [半小时彻底弄懂 Casbin 基础模型](https://www.bilibili.com/video/BV1qz4y167XP/?spm_id_from=333.999.0.0&vd_source=958c4d7f9243c68a0ec9dcd327bad930)[Casbin 的代码使用、api 调用、自定义比较方法](https://www.bilibili.com/video/BV13r4y1M7AC/?spm_id_from=333.999.0.0&vd_source=958c4d7f9243c68a0ec9dcd327bad930)
68-
,讲的是非常好
69-
70-
2. 了解规则
71-
72-
通过以上学习之后,我们再来看内置规则(不学习 == 天书),你可以通过[编辑器](https://casbin.org/zh/docs/online-editor)
73-
进行模型规则验证
74-
75-
内置模型 `backend/plugin/casbin/utils/rbac.py`
76-
77-
```text:no-line-numbers
78-
[request_definition]
79-
r = sub, obj, act
80-
81-
[policy_definition]
82-
p = sub, obj, act
83-
84-
[role_definition]
85-
g = _, _
86-
87-
[policy_effect]
88-
e = some(where (p.eft == allow))
89-
90-
[matchers]
91-
m = g(r.sub, p.sub) && (keyMatch(r.obj, p.obj) || keyMatch3(r.obj, p.obj)) && (r.act == p.act || p.act == "*")
92-
```
93-
94-
3. 了解策略
95-
::: tabs
96-
@tab p 策略
97-
98-
- 添加基于角色的访问权限(推荐)
99-
100-
需要配合添加 g 策略才能实现用户访问权限,适合配置所有用户接口访问策略,拥有此角色的用户便能拥有相应的访问权限<br>
101-
102-
格式:`角色 role + 访问路径 path + 访问方法 method`
103-
104-
- 添加基于用户的访问权限(不推荐)
105-
106-
不需要配合添加 g 策略就能实现用户访问权限,适合配置指定用户接口访问策略<br>
107-
108-
格式:`用户 uuid + 访问路径 path + 访问方法 method`
109-
110-
@tab g 策略
111-
当 p 策略为【添加基于角色的访问权限】时,需要此策略
112-
113-
格式:`用户 uuid + 角色 role`
114-
115-
4. 添加策略
38+
## Casbin
11639

117-
在文件 `backend/plugin/casbin/api/v1/sys/casbin.py` 中,包含策略相关接口,依据模型和策略规则添加相关策略即可
118-
119-
5. 检查接口依赖
120-
121-
只有在接口中添加以下依赖时,才能自动调用此鉴权方式
122-
123-
```python{1}
124-
@router.post('/hello', summary='你好', dependencies=[DependsRBAC])
125-
async def hello():
126-
....
127-
```
128-
129-
:::
40+
此方案是 Go 语言中比较流行的解决方案,它非常灵活,可以通过模型定义多种控制规则,要想实现此 RBAC
41+
鉴权,请通过 [插件市场](../../plugin/market.md) 获取
13042

13143
## 解耦
13244

133-
在实际项目开发中,不可能同时存在两种 RBAC 解决方案,我们可以通过以下方式删除其中一种集成
134-
135-
### 角色菜单
45+
在实际项目开发中,不可能同时存在多种 RBAC 解决方案,您可以通过以下方式删除【角色菜单】集成
13646

13747
- 删除 `backend/common/security/permission.py` 文件中的 `RequestPermission` 类及所有类调用
13848
- 删除 `backend/core/conf.py` 文件中的 `RBAC_ROLE_MENU_MODE``RBAC_ROLE_MENU_EXCLUDE`
13949
- 删除 `backend/common/security/rbac.py` 文件中 `rbac_verify` 方法里面的 `if settings.RBAC_ROLE_MENU_MODE:`
14050
条件及相关代码
141-
142-
### Casbin
143-
144-
删除 `backend/plugin/casbin` 文件夹

docs/backend/reference/schema.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ title: schema
88

99
fba 遵循以下命名规范:
1010

11-
- 基础 schema: `XxxSchemaBase(SchemaBase)`
12-
- 接口入参:`XxxParam(XxxSchemaBase)`
13-
- 新增入参:`CreateXxxParam(XxxSchemaBase)`
14-
- 更新入参:`UpdateXxxParam(XxxSchemaBase)`
15-
- 查询详情:`GetXxxDetail(XxxSchemaBase)`
16-
- 查询详情(包含关系):`GetXxxWithRelationDetail(XxxSchemaBase)`
11+
- 基础 schema: `(SchemaBase)`
12+
- 接口入参:`XxxParam()`
13+
- 新增入参:`CreateXxxParam()`
14+
- 更新入参:`UpdateXxxParam()`
15+
- 查询详情:`GetXxxDetail()`
16+
- 查询详情(包含关系):`GetXxxWithRelationDetail()`
1717

1818
## Field
1919

docs/backend/summary/intro.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ mvc 架构作为常规设计模式,在 python web 中很常见,但是三层
2727
- [x] 遵循 RESTful API 规范
2828
- [x] 使用 SQLAlchemy 2.0 全新语法
2929
- [x] 使用 Pydantic v2 版本
30-
- [x] 实现角色菜单 RBAC 访问控制
31-
- [x] 集成 Casbin RBAC 访问控制
30+
- [x] 角色菜单 RBAC 访问控制
3231
- [x] 支持 Celery 异步任务
3332
- [x] 自研 JWT 认证中间件
3433
- [x] 支持全局自定义时间时区

docs/frontend/process.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ badge:
1515
- [ ] 用户管理 <Badge text="优先" />
1616
- [ ] 角色管理
1717
- [ ] 菜单管理 <Badge text="优先" />
18-
- [ ] 数据规则
19-
- [ ] Casbin RBAC <Badge text="延迟" type="warning" />
18+
- [ ] 数据权限
2019
- [x] 登录日志
2120
- [x] 操作日志
2221
- [x] 系统监控

docs/planet.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ aside: false
4545
description="优雅的使用 Celery"
4646
/>
4747
<LinkCard
48-
title="数据规则"
48+
title="数据权限"
4949
icon="fluent-color:video-16"
5050
href="https://t.zsxq.com/qlZyT"
5151
description="超灵活的行级数据权限"

docs/plugin/market.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,6 @@ aside: false
1818
## 内置
1919

2020
<CardGrid>
21-
<Card icon="charm:shield-keyhole" title="Casbin-RBAC">
22-
<p style="color: #898989;">基于 Casbin 实现的 RBAC 权限</p>
23-
<span>
24-
<Icon name="logos:mysql" size="1.5em" />
25-
·
26-
<Icon name="vscode-icons:file-type-pgsql" size="1.5em" />
27-
·
28-
<Badge type="tip" text="fba" />
29-
·
30-
<Badge text="extra" color="var(--vp-c-text-2)" bg-color="rgb(17 170 0 / 38%)"/>
31-
</span>
32-
</Card>
3321
<Card icon="fa6-regular:file-code" title="代码生成">
3422
<p style="color: #898989;">生成通用业务代码(目前仅包含后端工程)</p>
3523
<span>
@@ -85,6 +73,18 @@ aside: false
8573
这些插件由 fba 开发人员提供和维护
8674

8775
<CardGrid>
76+
<LinkCard icon="charm:shield-keyhole" title="Casbin-RBAC" href="https://github.com/fastapi-practices/fba_casbin">
77+
<p style="color: #898989;">基于 Casbin 实现的 RBAC 权限</p>
78+
<span>
79+
<Icon name="logos:mysql" size="1.5em" />
80+
·
81+
<Icon name="vscode-icons:file-type-pgsql" size="1.5em" />
82+
·
83+
<Badge type="tip" text="fba" />
84+
·
85+
<Badge text="extra" color="var(--vp-c-text-2)" bg-color="rgb(17 170 0 / 38%)"/>
86+
</span>
87+
</LinkCard>
8888
<LinkCard icon="ant-design:aliyun-outlined" title="阿里云 oss" href="https://github.com/fastapi-practices/fba_aliyun_oss">
8989
<p style="color: #898989;">阿里云 oss 文件上传</p>
9090
<span>

docs/sponsors.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ font-family: sans-serif;
2121
text-decoration: none;
2222
border: 1px solid #5D3408;
2323
display: inline-block;
24-
">☕ 来杯小瑞幸</a>
24+
">来杯 ☕</a>
2525

2626
::: info
2727
我在 Linux Do 发了一篇主题:[FastAPI 最佳架构](https://linux.do/t/topic/470425?u=wu-clan)

0 commit comments

Comments
 (0)