# 概述
Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。
## Casbin支持以下编程语言:
| [](https://github.com/casbin/casbin) | [](https://github.com/casbin/jcasbin) | [](https://github.com/casbin/node-casbin) | [](https://github.com/php-casbin/php-casbin) |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| [Casbin](https://github.com/casbin/casbin) | [jCasbin](https://github.com/casbin/jcasbin) | [node-Casbin](https://github.com/casbin/node-casbin) | [PHP-Casbin](https://github.com/php-casbin/php-casbin) |
| 可用于生产环境 | 可用于生产环境 | 可用于生产环境 | 可用于生产环境 |
| [](https://github.com/casbin/pycasbin) | [](https://github.com/casbin-net/Casbin.NET) | [](https://github.com/casbin4d/Casbin4D) | [](https://github.com/casbin/casbin-rs) |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| [PyCasbin](https://github.com/casbin/pycasbin) | [Casbin.NET](https://github.com/casbin-net/Casbin.NET) | [Casbin4D](https://github.com/casbin4d/Casbin4D) | [Casbin-RS](https://github.com/casbin/casbin-rs) |
| production-ready | production-ready | experimental | WIP |
## Feature set for different languages
| Feature | Go | Java | Node.js | PHP | Python | C# | Delphi |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Filtered Adapter | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ |
| Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
| Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Multi-Threading | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
我们一直致力于让Casbin在不同的编程语言中拥有相同的特性。 但是现实总是不完美的。 上方的表格展示了当前的进度。 Watcher或者Role Manager的✅ 仅代表Casbin对该编程语言有接口。 而是否实现了watcher或者role manager则是另一回事了。
## Casbin是什么?
Casbin可以做到:
1. 支持自定义请求的格式,默认的请求格式为`{subject, object, action}`。
2. 具有访问控制模型model和策略policy两个核心概念。
3. 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。
4. 支持超级用户,如`root`或`Administrator`,超级用户可以不受授权策略的约束访问任意资源。
5. 支持多种内置的操作符,如`keyMatch`,方便对路径式的资源进行管理,如`/foo/bar`可以映射到`/foo*`
Casbin不能做到:
1. 身份认证 authentication(即验证用户的用户名、密码),casbin只负责访问控制。应该有其他专门的组件负责身份认证,然后由casbin进行访问控制,二者是相互配合的关系。
2. 管理用户列表或角色列表。 Casbin 认为由项目自身来管理用户、角色列表更为合适, 用户通常有他们的密码,但是 Casbin 的设计思想并不是把它作为一个存储密码的容器。 而是存储RBAC方案中用户和角色之间的映射关系。