casbin的表字段解释

casbin_rule表中
  p_type --类型,可以是p策略,g角色等等
  v0 --角色 roleName/roleId   sub
  v1 --Path 路径              obj
  v2 --Method 请求方式         act
  v3 --允许读/写 read/write
  v4 --允许/拒绝 allow/deny
  v5 --不知道

ptype=g的时候v1=角色
ptype=p的时候,v2=action,v0=subject,v1=obj
策略:即ptype为p的数据

写的不错的文章推荐:https://blog.youkuaiyun.com/hotqin888/article/details/78571240

### Casbin 权限管理框架使用教程 Casbin 是一个强大的、高效的开源访问控制框架,适用于多种编程语言环境。以下是关于 Casbin 权限管理框架的核心概念及其使用的详细介绍。 #### 一、核心概念 Casbin 提供了一种灵活的方式来定义和实施访问控制策略。它的主要组成部分包括: 1. **Model (模型)** Model 定义了访问控制的规则集以及所采用的访问控制模型(如 RBAC, ABAC)。开发者可以通过配置文件来指定这些规则。例如,在基于角色的访问控制(RBAC)中,可以设置哪些角色具有特定资源的操作权限[^2]。 2. **Policy (策略)** Policy 表示具体的访问控制规则,通常存储在一个持久化数据库或者内存中。每条策略记录描述了一个主体(User 或 Role)、对象(Resource),以及该主体对该对象允许执行的动作(Action)。例如,“Alice 可以读取 Data1”。 3. **Enforcer (执法者)** Enforcer 负责加载 model 和 policy 并提供 API 接口用于查询某个请求是否被授权。它是应用程序与 Casbin 框架之间的桥梁[^1]。 #### 二、安装与初始化 不同语言环境下安装方式略有差异,下面分别介绍 Python 和 Go 的基础安装过程。 ##### (1)Python 环境下安装 PyCasbin ```bash pip install casbin ``` 创建并初始化 enforcer 实例: ```python from casbin import Enforcer e = Enforcer("path/to/model.conf", "path/to/policy.csv") ``` 其中 `model.conf` 文件定义了访问控制逻辑,而 `policy.csv` 存储具体规则数据[^3]。 ##### (2)Go 环境下集成 Casbin 对于 Golang 用户来说,推荐结合 ORM 工具如 GORM 进行开发。首先添加依赖项到项目中: ```go import ( "github.com/casbin/casbin/v2" _ "github.com/go-sql-driver/mysql" gormadapter "github.com/casbin/gorm-adapter/v3" ) ``` 接着实例化适配器并与 enforcer 关联起来: ```go a := gormadapter.NewAdapter("mysql", "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local", true) e := casbin.NewEnforcer("./model.conf", a) if err != nil { panic(err.Error()) } ``` 此处需要注意的是 adapter 参数需匹配实际使用的数据库类型及连接字符串。 #### 三、自定义访问控制模型 默认情况下,Casbin 支持 ACL、RBAC、ABAC 多种模式的选择。如果现有模板无法满足需求,则可通过修改 conf 配置来自定义复杂场景下的判定条件。 样例内容如下所示: ```ini [request_definition] r = sub, obj, act [policy_definition] p = sub, obj, act [policy_effect] e = some(where (p.eft == allow)) [matchers] m = r.sub == p.sub && r.obj == p.obj && r.act == p.act ``` 上述片段表示只有当请求者的身份(sub)、目标(obj)以及动作(act)完全一致时才会授予许可。 --- #### 四、测试验证 完成以上步骤之后即可调用 enforce 方法检测某次操作是否合法。 ```python sub = 'alice' # The user that wants to access a resource. obj = 'data1' # The resource that is going to be accessed. act = 'read' # The operation that the user performs on the object. if e.Enforce(sub, obj, act): print('Permit') else: print('Deny') ``` 同样地,在 GO 中也有类似的实现形式: ```go allowed, err := e.Enforce("alice", "data1", "read") if allowed { fmt.Println("Allow") } else { fmt.Println("Deny") } ``` --- ### 总结 通过学习本篇文档,您应该已经理解如何利用 Casbin 构建安全可靠的权限管理系统,并能够在不同的编程环境中快速上手实践。更多高级特性可查阅官方文档进一步探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值