Casbin 是一个强大的、高效的开源访问控制框架,支持ACL、RBAC、ABAC等多种访问控制模型,支持Golang、Java、PHP、Node.js等多种编程语言。
Casbin支持以下编程语言:
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| Casbin | jCasbin | node-Casbin | PHP-Casbin |
| 可用于生产环境 | 可用于生产环境 | 可用于生产环境 | 可用于生产环境 |
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| PyCasbin | Casbin4D | Casbin-Net | Casbin-RS |
| 可用于生产环境 | experimental | WIP | WIP |
特性
Casbin 做了什么:
- 自定义请求的格式,默认的请求格式为
`{subject, object, action}`。 - 访问控制模型及其策略的存储。
- 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。
- 支持超级用户,如
`root或Administrator`,超级用户可以不受授权策略的约束访问任意资源。 - 支持多种内置的操作符,如
`keyMatch,方便对路径式的资源进行管理,如/foo/bar可以映射到/foo*`。
Casbin 不做的事情:
- 身份认证
authentication(即验证用户的用户名、密码),casbin只负责访问控制。应该有其他专门的组件负责身份认证,然后由casbin进行访问控制,二者是相互配合的关系。 - 管理用户列表或角色列表。
Casbin认为由项目自身来管理用户、角色列表更为合适, 用户通常有他们的密码,但是Casbin的设计思想并不是把它作为一个存储密码的容器。 而是存储RBAC方案中用户和角色之间的映射关系。








