{"id":13462241,"url":"https://github.com/php-casbin/think-casbin","last_synced_at":"2025-03-25T01:31:56.286Z","repository":{"id":62499948,"uuid":"155209019","full_name":"php-casbin/think-casbin","owner":"php-casbin","description":"专为ThinkPHP定制的Casbin的扩展包，Casbin是一个功能强大，高效的开源访问控制库。","archived":true,"fork":false,"pushed_at":"2020-09-20T03:59:35.000Z","size":31,"stargazers_count":154,"open_issues_count":1,"forks_count":21,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-10-29T11:10:57.500Z","etag":null,"topics":["abac","access-control","acl","casbin","permission","rbac","restful","roles","security","thinkphp"],"latest_commit_sha":null,"homepage":"https://casbin.org","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/php-casbin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-29T12:33:55.000Z","updated_at":"2024-06-28T09:44:25.000Z","dependencies_parsed_at":"2022-11-02T12:01:04.890Z","dependency_job_id":null,"html_url":"https://github.com/php-casbin/think-casbin","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-casbin%2Fthink-casbin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-casbin%2Fthink-casbin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-casbin%2Fthink-casbin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/php-casbin%2Fthink-casbin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/php-casbin","download_url":"https://codeload.github.com/php-casbin/think-casbin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245382109,"owners_count":20606157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abac","access-control","acl","casbin","permission","rbac","restful","roles","security","thinkphp"],"created_at":"2024-07-31T12:00:42.871Z","updated_at":"2025-03-25T01:31:56.014Z","avatar_url":"https://github.com/php-casbin.png","language":"PHP","readme":"Think-Casbin\n====\n\n[![Build Status](https://travis-ci.org/php-casbin/think-casbin.svg?branch=master)](https://travis-ci.org/php-casbin/think-casbin)\n[![Coverage Status](https://coveralls.io/repos/github/php-casbin/think-casbin/badge.svg)](https://coveralls.io/github/php-casbin/think-casbin)\n[![Latest Stable Version](https://poser.pugx.org/casbin/think-adapter/v/stable)](https://packagist.org/packages/casbin/think-adapter)\n[![Total Downloads](https://poser.pugx.org/casbin/think-adapter/downloads)](https://packagist.org/packages/casbin/think-adapter)\n[![License](https://poser.pugx.org/casbin/think-adapter/license)](https://packagist.org/packages/casbin/think-adapter)\n\n[PHP-Casbin](https://github.com/php-casbin/php-casbin) 是一个强大的、高效的开源访问控制框架，它支持基于各种访问控制模型的权限管理。\n\n[Think-Casbin](https://github.com/php-casbin/think-casbin) 是一个专为ThinkPHP5.1定制的Casbin的扩展包，使开发者更便捷的在thinkphp项目中使用Casbin。\n\n\u003e 针对 ThinkPHP6.0 现在推出了更加强大的扩展 [ThinkPHP 6.0 Authorization](https://github.com/php-casbin/think-authz).\n\n### 知识储备\n\n+ 熟练使用`Composer`包管理工具\n+ 掌握ThinkPHP框架各个功能，例如：门面（Facade）、模型、数据库迁移工具等\n+ 熟悉PHP命令行、ThinkPHP命令行的使用\n+ 了解`Casbin`工作原理及用法\n\n### 安装\n\n1. 创建thinkphp项目（**如果没有**）：\n\n```\ncomposer create-project topthink/think=5.1.* tp5\n```\n\n2. 在`ThinkPHP`项目里，安装`Think-Casbin`扩展：\n\n```\ncomposer require casbin/think-adapter\n```\n\n3. 发布资源:\n\n```\nphp think casbin:publish\n```\n\n这将自动创建model配置文件`config/casbin-basic-model.conf`，和Casbin的配置文件`config/casbin.php`。\n\n4. 数据迁移:\n\n由于Think-Casbin默认将Casbin的策略（Policy）存储在数据库中，所以需要初始化数据库表信息。\n\n执行前，请**确保数据库连接信息配置正确**，如需单独修改`Casbin`的数据库连接信息或表名，可以修改`config/casbin.php`里的配置。\n\n```\nphp think casbin:migrate\n```\n\n这将会自动创建Casbin的策略（Policy）表`casbin_rule`。\n\n### 用法\n\n#### 为用户分配权限\n\n```php\nuse Casbin;\n\n// 给用户alice赋予对data1的read权限\nCasbin::addPolicy('alice', 'data1', 'read');\n```\n\n#### 判断是权限策略是否存在\n\n```php\nCasbin::hasPolicy('alice', 'data1', 'read'); // true\n```\n\n#### 移除权限\n\n```php\nCasbin::removePolicy('alice', 'data1', 'read');\n```\n\n#### 使用决策器，验证权限\n\n```php\n\nuse Casbin;\n\n$sub = 'alice'; // the user that wants to access a resource.\n$obj = 'data1'; // the resource that is going to be accessed.\n$act = 'read'; // the operation that the user performs on the resource.\n\nif (true === Casbin::enforce($sub, $obj, $act)) {\n    // permit alice to read data1\n    echo 'permit alice to read data1';\n} else {\n    // deny the request, show an error\n}\n```\n\n#### 自定义配置\n\n`config/casbin-basic-model.conf`为Casbin的model文件\n\n`config/casbin.php`为Casbin的adapter、db配置信息\n\n#### 更多API参考\n\n- [Management API](https://casbin.org/docs/en/management-api)\n- [RBAC API](https://casbin.org/docs/en/rbac-api)\n\n### 关于\n\n**Think-Casbin**：\n\n+ 实现基于Think-ORM的Adapter存储（将Policy存储在数据库中）\n+ 实现Casbin的门面（think\\Facade）调用，使用`\\Casbin::`可以静态调用`PHP-Casbin`里`Enforcer`的所有方法。\n+ 使用配置文件对Casbin的Model、Adapter的可配置化\n\n通过Casbin官网 (https://casbin.org )查看更多用法。\n","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphp-casbin%2Fthink-casbin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphp-casbin%2Fthink-casbin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphp-casbin%2Fthink-casbin/lists"}