Skip to content

Commit f9954b9

Browse files
committed
Update README and bump dependencies
1 parent 4e66805 commit f9954b9

2 files changed

Lines changed: 56 additions & 26 deletions

File tree

README.md

Lines changed: 54 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,32 @@
11
# Casbin RBAC
22

3-
基于 Casbin 实现的 RBAC 访问控制
3+
基于 Casbin 实现的 RBAC 访问控制插件,支持角色、用户、接口维度的策略管理
44

5-
我们在最初架构设计时,参考了 go-admin,gin-vue-admin... 等优秀的开源项目,同时引入了 Casbin,它在众多 python web
6-
开源项目中可能是极为罕见的,并且,它的学习成本非常高
5+
- 支持 P 策略和 G 策略管理
6+
- 支持在路由中通过 `DependsRBAC` 启用策略校验
7+
- 建议先系统学习 Casbin,再接入业务接口鉴权
78

8-
使用此插件前,请查看以下内容
9+
使用此插件前,建议查看以下内容:
910

10-
## Casbin 基础学习
11+
- **官方文档**[Casbin 官网](https://casbin.org/docs/get-started)
12+
- **在线编辑器**[Casbin Online Editor](https://casbin.org/zh/docs/online-editor)
13+
- **视频教程**
14+
- [半小时彻底弄懂 Casbin 基础模型](https://www.bilibili.com/video/BV1qz4y167XP)
15+
- [Casbin 代码使用与 API 调用](https://www.bilibili.com/video/BV13r4y1M7AC)
1116

12-
建议通过以下资源系统学习 Casbin
17+
## 插件类型
1318

14-
- **官方文档**[Casbin官网](https://casbin.org/docs/get-started)
15-
- **视频教程**
16-
- [半小时彻底弄懂Casbin基础模型](https://www.bilibili.com/video/BV1qz4y167XP)
17-
- [Casbin代码使用与API调用](https://www.bilibili.com/video/BV13r4y1M7AC)
19+
- 扩展级插件
20+
- 扩展目标:`admin`
21+
22+
## 配置说明
23+
24+
`backend/core/conf.py` 中更新以下内容:
1825

19-
## 全局配置
26+
```python
27+
# RBAC
28+
RBAC_ROLE_MENU_MODE: bool = False
29+
```
2030

2131
`backend/core/conf.py` 中添加以下内容:
2232

@@ -28,7 +38,21 @@
2838
RBAC_CASBIN_EXCLUDE: set[tuple[str, str]]
2939
```
3040

31-
## 规则配置
41+
插件目录下 `plugin.toml``[settings]` 中包含以下内容:
42+
43+
```toml
44+
[settings]
45+
RBAC_CASBIN_EXCLUDE = [
46+
['POST', '/api/v1/auth/logout'],
47+
]
48+
```
49+
50+
## 使用方式
51+
52+
1. 安装并启用插件后,重启后端服务
53+
2. 在后台维护 API 资源、Casbin 策略和用户角色关系
54+
3. 在需要鉴权的路由中添加 `DependsRBAC` 依赖
55+
4. 使用在线编辑器验证规则后,再将策略写入系统
3256

3357
内置模型:
3458

@@ -49,26 +73,32 @@ e = some(where (p.eft == allow))
4973
m = g(r.sub, p.sub) && (keyMatch(r.obj, p.obj) || keyMatch3(r.obj, p.obj)) && (r.act == p.act || p.act == "*")
5074
```
5175

52-
建议使用 [在线编辑器](https://casbin.org/zh/docs/online-editor) 验证规则
53-
54-
## 策略管理
55-
56-
| 类型 | 适用场景 | 格式 | 依赖关系 |
57-
|---------------|--------|-------------------------------------|--------|
58-
| **P策略**(角色基准) | 批量用户配置 | `角色 role + 访问路径 path + 访问方法 method` | 需配合G策略 |
59-
| **P策略**(用户基准) | 指定用户配置 | `用户 uuid + 访问路径 path + 访问方法 method` | 独立生效 |
60-
| **G策略** | 角色分配 | `用户 uuid + 角色 role` | 需P策略配合 |
76+
策略类型:
6177

62-
## 接口集成
78+
| 类型 | 适用场景 | 格式 | 依赖关系 |
79+
|----------------|--------|-------------------------------------|----------|
80+
| **P 策略**(角色基准) | 批量用户配置 | `角色 role + 访问路径 path + 访问方法 method` | 需配合 G 策略 |
81+
| **P 策略**(用户基准) | 指定用户配置 | `用户 uuid + 访问路径 path + 访问方法 method` | 独立生效 |
82+
| **G 策略** | 角色分配 | `用户 uuid + 角色 role` | 需 P 策略配合 |
6383

64-
在路由声明中添加鉴权依赖
84+
路由集成示例
6585

6686
```python
6787
@router.post(
6888
'/hello',
6989
summary='示例接口',
70-
dependencies=[DependsRBAC] # 关键鉴权标识
90+
dependencies=[DependsRBAC],
7191
)
7292
async def hello():
7393
...
7494
```
95+
96+
## 卸载说明
97+
98+
- 卸载插件后,移除业务路由中的 Casbin 鉴权依赖
99+
- 如前端菜单或后台页面已集成策略管理,请同步清理对应入口
100+
101+
## 联系方式
102+
103+
- 作者:`wu-clan`
104+
- 反馈方式:提交 Issue 或 PR

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
casbin>=1.38.0
2-
casbin_async_sqlalchemy_adapter>=1.7.0
1+
pycasbin>=2.8.0
2+
casbin_async_sqlalchemy_adapter>=1.17.0

0 commit comments

Comments
 (0)