Skip to content

fastapi-practices/casbin_rbac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Casbin RBAC

我们在最初架构设计时,参考了 go-admin,gin-vue-admin... 等优秀的开源项目,同时引入了 Casbin,它在众多 python web 开源项目中可能是极为罕见的,并且,它的学习成本非常高

使用此插件前,请查看以下内容

Casbin 基础学习

建议通过以下资源系统学习 Casbin

配置

在 core/conf.py 中添加以下内容:

# Plugin Casbin RBAC
# RBAC
RBAC_CASBIN_EXCLUDE: set[tuple[str, str]] = {
  ('POST', f'{settings.FASTAPI_API_V1_PATH}/auth/logout'),
  ('POST', f'{settings.FASTAPI_API_V1_PATH}/auth/token/new'),
}

规则配置

内置模型:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && (keyMatch(r.obj, p.obj) || keyMatch3(r.obj, p.obj)) && (r.act == p.act || p.act == "*")

建议使用 在线编辑器 验证规则

策略管理

类型 适用场景 格式 依赖关系
P策略(角色基准) 批量用户配置 角色 role + 访问路径 path + 访问方法 method 需配合G策略
P策略(用户基准) 指定用户配置 用户 uuid + 访问路径 path + 访问方法 method 独立生效
G策略 角色分配 用户 uuid + 角色 role 需P策略配合

策略操作接口

文件路径:api/v1/sys/casbin.py

接口集成

在路由声明中添加鉴权依赖:

@router.post(
    '/hello',
    summary='示例接口',
    dependencies=[DependsRBAC]  # 关键鉴权标识
)
async def hello():
    ...

About

fastapi_best_architecture casbin RBAC 插件

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages