简介
Casbin 是一个高效的开源访问控制库,用于实施授权并支持多种访问控制模型。
实现基于规则的访问控制非常简单:在任何适合您需求的格式的 policy 文件中定义主体、对象和允许的操作。此 模式在所有 Casbin 实现中保持一致。model 文件赋予开发人员和管理员对授权逻辑的完全控制权——包括布局、执行流程和条件。Enforcer 组件根据您的模型和策略评估传入的请求。
Casbin 支持的语言
Casbin 提供对多种编程语言的原生支持,使您可以将其集成到广泛的项目和工作流中:
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| Casbin | jCasbin | node-Casbin | PHP-Casbin |
| 生产就绪 | 生产就绪 | 生产就绪 | 生产就绪 |
![]() | ![]() | ![]() | |
|---|---|---|---|
| PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
| 生产就绪 | 生产就绪 | 生产就绪 | 生产就绪 |
各语言功能集
我们致力于在所有语言实现之间保持功能对等;目前尚未实现完全的统一。
| 功能 | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 执行 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
扩展 ABAC (eval()) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 适配器 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 管理 API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 批量 API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| 过滤适配器 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| 监视器 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| 角色管理器 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 多线程 | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| 匹配器中的 'in' | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
备注
Watcher 或 Role Manager 旁的勾选标记 (✅) 表示核心库中存在该接口;这并不保证该语言有可用的实现。
什么是 Casbin?
Casbin 是一个授权库,适用于需要受控访问资源的应用程序。通常,一个主体(用户或服务)请求访问一个对象(资源或实体)以执行某个操作(例如 读取、写入 或 删除)。你可以定义这些操作以匹配你的应用程序。这是 Casbin 最常处理的标准 { subject, object, action } 流程。
Casbin 还通过 角色 (RBAC)、属性 (ABAC) 和其他模式支持更复杂的场景。
Casbin 的功能
- 执行策略:采用经典的
{ subject, object, action }格式或你定义的任何自定义格式,包括允许和拒绝规则。 - 管理存储:用于访问控制模型和策略的存储。
- 处理用户–角色和角色–角色关系(RBAC 角色层级)。
- 支持内置超级用户(例如
root,administrator),无需显式规则即可拥有无限制访问权限。 - 提供内置运算符用于模式匹配(例如
keyMatch将/foo/bar与/foo*进行匹配)。
Casbin 不提供的功能
- 用户身份验证 — 在登录时验证用户名和密码。
- 用户或角色列表管理 — 维护用户或角色的列表。
大多数应用程序已经管理着用户、角色和凭据。Casbin 仅专注于授权,不存储或验证密码。在 RBAC 模式下,它确实会维护用户–角色关联。
下一步
- 构建一个可运行的示例,参见 Go、Node.js、Python 或 Java。
- 查看 Casbin 与 OpenFGA, OPA, CASL 和 Cedar 的比较。







Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.