Casbin
一个支持如ACL, RBAC, ABAC等访问模型,可用于Golang, Java, C/C++, Node.js, Javascript, PHP, Laravel, Python, .NET (C#), Delphi, Rust, Ruby, Lua (OpenResty), Dart (Flutter)和Elixir的授权库。
![[object Object]](/img/model.png)
支持多种访问控制模型
在Casbin,访问控制模型是基于PERM元模型 (Policy, Effect, Request, Matchers) 压缩而成的一个CONF文件。 因此,项目授权机制的转换或升级就像修改配置一样简单。
![[object Object]](/img/storage.png)
灵活的策略储存方式
除了内存和文件外,Casbin策略还可以存储在许多地方。 目前Casbin已经支持了从MySQL、Postgres、Oracle到MongoDB、Redis、Cassandra、AWS S3等数十种数据库。请在此查看完整的支持列表:适配器.
![[object Object]](/img/language.png)
跨语言 & 跨平台
Casbin已经使用Golang、Java、PHP和Node.js等等语言实现。 所有的实现共享相同的 API 和行为。学习一次即可到处使用。
政策可持续性
在Casbin中,策略的存储使用Casbin的中间件Adapter实现(Casbin的又名中间件)。为了保证轻量,我们没有将除了默认File Adapter外的Adapter代码放在主库(默认文件适配器除外)。Casbin Adapter的完整列表见下文。欢迎第三方贡献新的Adapter并通知我们,我们会将其加进列表中:) 。 关于Adapter的详情请参阅此文档:适配器

规模政策执行
一些适配器支持过滤策略管理。这意味着Casbin 加载的策略是基于给定过滤器的存储策略的子集。当解析整个策略成为性能瓶颈时,就能在大型多租户环境中有效地执行策略。角色管理器
角色管理器用于管理Casbin中的RBAC角色层次(用户角色映射)。 角色管理器可以从 Casbin 策略规则或外部来源,如LDAP、Okta、Authure AD等获取角色数据。 我们支持以不同方式实施角色管理员。 为了保持轻量值,我们不在主库中放置角色管理器代码(默认角色管理器除外)。 提供了完整的 Casbin 角色管理器列表: role-managers。