# 概述
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方案中用戶和角色之間的映射關系。