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/casbin4d/Casbin4D) | [](https://github.com/Devolutions/casbin-net) | [](https://github.com/Devolutions/casbin-rs)
----|----|----|----
[PyCasbin](https://github.com/casbin/pycasbin) | [Casbin4D](https://github.com/casbin4d/Casbin4D) | [Casbin-Net](https://github.com/Devolutions/casbin-net) | [Casbin-RS](https://github.com/Devolutions/casbin-rs)
可用于生產環境 | experimental | WIP | WIP
#### 特性
Casbin 做了什么:
1. 自定義請求的格式,默認的請求格式為``{subject, object, action}``。
2. 訪問控制模型及其策略的存儲。
3. 支持RBAC中的多層角色繼承,不止主體可以有角色,資源也可以具有角色。
4. 支持超級用戶,如 ``root`` 或 ``Administrator``,超級用戶可以不受授權策略的約束訪問任意資源。
5. 支持多種內置的操作符,如 ``keyMatch``,方便對路徑式的資源進行管理,如 ``/foo/bar`` 可以映射到 ``/foo*``。
Casbin 不做的事情:
1. 身份認證 `authentication`(即驗證用戶的用戶名、密碼),`casbin`只負責訪問控制。應該有其他專門的組件負責身份認證,然后由`casbin`進行訪問控制,二者是相互配合的關系。
2. 管理用戶列表或角色列表。 `Casbin` 認為由項目自身來管理用戶、角色列表更為合適, 用戶通常有他們的密碼,但是 `Casbin`的設計思想并不是把它作為一個存儲密碼的容器。 而是存儲RBAC方案中用戶和角色之間的映射關系。