跳转至主要内容

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]

支持多种访问控制模型

在Casbin,访问控制模型是基于PERM元模型 (Policy, Effect, Request, Matchers) 压缩而成的一个CONF文件。 因此,项目授权机制的转换或升级就像修改配置一样简单。

[object Object]

灵活的策略储存方式

除了内存和文件外,Casbin策略还可以存储在许多地方。 目前Casbin已经支持了从MySQL、Postgres、Oracle到MongoDB、Redis、Cassandra、AWS S3等数十种数据库。请在此查看完整的支持列表:适配器.

[object Object]

跨语言 & 跨平台

Casbin已经使用Golang、Java、PHP和Node.js等等语言实现。 所有的实现共享相同的 API 和行为。学习一次即可到处使用。

政策可持续性

在Casbin中,策略的存储使用Casbin的中间件Adapter实现(Casbin的又名中间件)。为了保证轻量,我们没有将除了默认File Adapter外的Adapter代码放在主库(默认文件适配器除外)。Casbin Adapter的完整列表见下文。欢迎第三方贡献新的Adapter并通知我们,我们会将其加进列表中:) 。 关于Adapter的详情请参阅此文档:适配器
Policy Persistence
Policy enforcement at scale

规模政策执行

一些适配器支持过滤策略管理。这意味着Casbin 加载的策略是基于给定过滤器的存储策略的子集。当解析整个策略成为性能瓶颈时,就能在大型多租户环境中有效地执行策略。

角色管理器

角色管理器用于管理Casbin中的RBAC角色层次(用户角色映射)。 角色管理器可以从 Casbin 策略规则或外部来源,如LDAP、Okta、Authure AD等获取角色数据。 我们支持以不同方式实施角色管理员。 为了保持轻量值,我们不在主库中放置角色管理器代码(默认角色管理器除外)。 提供了完整的 Cassbin 角色管理器列表: role-managers
Role manager

谁在使用Casbin?

从世界500强企业到新兴创业公司,数以百计的项目正在使用 Casbin 。如果你想知道使用 Casbin可以做些什么!请查看这些应用程序吧