文档 |教程 |扩展
突发新闻:Laravel-authz 现已推出,这是 Laravel 框架的授权库。
PHP-Casbin是一个强大、高效的PHP项目开源访问控制库。它为基于各种访问控制模型的强制授权提供支持。
卡斯宾 | jCasbin | 节点Casbin | PHP-Casbin |
生产就绪 | 生产就绪 | 生产就绪 | 生产就绪 |
PyCasbin | 卡斯宾网 | Casbin-CPP | Casbin-RS |
生产就绪 | 生产就绪 | 生产就绪 | 生产就绪 |
在项目的composer.json
中需要此包。这将下载该包:
composer require casbin/casbin
require_once ' ./vendor/autoload.php ' ;
use Casbin Enforcer ;
$ e = new Enforcer ( " path/to/model.conf " , " path/to/policy.csv " );
$ sub = " alice " ; // the user that wants to access a resource .
$ obj = " data1 " ; // the resource that is going to be accessed .
$ act = " read " ; // the operation that the user performs on the resource .
if ( $ e -> enforce ( $ sub , $ obj , $ act ) === true ) {
// permit alice to read data1
} else {
// deny the request , show an error
}
write-article
、 read-log
等权限来针对一种资源而不是单个资源。它不控制对特定文章或日志的访问。resource.Owner
这样的语法糖可以用来获取资源的属性。/res/*
、 /res/:id
等路径和GET
、 POST
、 PUT
、 DELETE
等 HTTP 方法。在 php-casbin 中,基于PERM 元模型(Policy、Effect、Request、Matchers)将访问控制模型抽象为 CONF 文件。因此,切换或升级项目的授权机制就像修改配置一样简单。您可以通过组合可用的模型来自定义您自己的访问控制模型。例如,您可以将 RBAC 角色和 ABAC 属性放在一个模型中,并共享一组策略规则。
php-casbin中最基本、最简单的模型是ACL。 ACL的模型CONF为:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
ACL 模型的策略示例如下:
p, alice, data1, read
p, bob, data2, write
这意味着:
php-casbin 的作用:
{subject, object, action}
形式或您定义的自定义形式强制执行策略,支持允许和拒绝授权。root
或administrator
。超级用户可以在没有明确权限的情况下执行任何操作。keyMatch
可以将资源键/foo/bar
映射到模式/foo*
。php-casbin 不做什么:
username
和password
)https://casbin.org/docs/en/overview
您还可以使用在线编辑器 (http://casbin.org/editor/) 在 Web 浏览器中编写 php-casbin 模型和策略。它提供syntax highlighting
和code completion
等功能,就像编程语言的 IDE 一样。
https://casbin.org/docs/tutorials
php-casbin 提供了两套 API 来管理权限:
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
模型 | 模型文件 | 政策文件 |
---|---|---|
前交叉韧带 | basic_model.conf | basic_policy.csv |
具有超级用户的 ACL | basic_model_with_root.conf | basic_policy.csv |
无用户的 ACL | basic_model_without_users.conf | basic_policy_without_users.csv |
无资源ACL | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
具有资源角色的 RBAC | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
带有域/租户的 RBAC | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
阿巴克 | abac_model.conf | 不适用 |
宁静的 | keymatch_model.conf | keymatch_policy.csv |
拒绝-覆盖 | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
优先事项 | 优先级模型.conf | 优先策略.csv |
Web 框架的 Authz 中间件:https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
这个项目的存在要感谢所有做出贡献的人。
感谢我们所有的支持者! [成为支持者]
成为赞助商来支持该项目。您的徽标将显示在此处,并带有指向您网站的链接。 [成为赞助商]
该项目根据 Apache 2.0 许可证获得许可。
如果您有任何问题或功能请求,请联系我们。欢迎公关。