ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[danger]需要 thinkphp 5.1+ ### **安装** 在`ThinkPHP`项目里,安装`Think-Casbin`扩展: ~~~ composer require casbin/think-adapter ~~~ ### **发布资源:** 这将自动创建model配置文件`config/casbin-basic-model.conf`,和Casbin的配置文件`config/casbin.php` ~~~ php think casbin:publish ~~~ ### **数据迁移:** 由于Think-Casbin默认将Casbin的策略(Policy)存储在数据库中,所以需要初始化数据库表信息。 执行前,请**确保数据库连接信息配置正确**,如需单独修改`Casbin`的数据库连接信息或表名,可以修改`config/casbin.php`里的配置。 执行下面的命令将自动创建Casbin的策略(Policy)表`casbin_rule`。 ~~~ php think casbin:migrate ~~~ ## **用法** #### **为用户分配权限** ~~~php use Casbin; // 给用户alice赋予对data1的read权限 Casbin::addPolicy('alice', 'data1', 'read'); ~~~ ### **判断是权限策略是否存在** ~~~php Casbin::hasPolicy('alice', 'data1', 'read'); // true ~~~ ### **移除权限** ~~~php Casbin::removePolicy('alice', 'data1', 'read'); ~~~ ### **使用决策器,验证权限** ~~~php use Casbin; $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 (true === Casbin::enforce($sub, $obj, $act)) { // permit alice to read data1 echo 'permit alice to read data1'; } else { // deny the request, show an error } ~~~ ### **自定义配置** `config/casbin-basic-model.conf`为Casbin的model文件 `config/casbin.php`为Casbin的adapter、db配置信息 ### **关于:** * 实现基于Think-ORM的Adapter存储(将Policy存储在数据库中) * 实现Casbin的门面(think\\Facade)调用,使用`\Casbin::`可以静态调用`PHP-Casbin`里`Enforcer`的所有方法。 * 使用配置文件对Casbin的Model、Adapter的可配置化