🔏 Casbin 权限控制插件(官方)

v1.0.7 版本
2022-06-13 版本更新时间
565 安装
14 star

截图

🔰🔰🔰 为了方便维护,源仓库 webman-casbin 插件贡献给了 php-casbin 官方。贡献日期:2022-03-24 ,以上截图仅供留念哈!
由于命名空间改动,导致下载数需要重新计算

简介

webman casbin 权限控制插件。它基于 PHP-Casbin, 一个强大的、高效的开源访问控制框架,支持基于ACL, RBAC, ABAC等访问控制模型。

依赖

安装

composer require -W casbin/webman-permission

使用

1. 依赖注入配置

修改配置config/container.php,其最终内容如下:

$builder = new \DI\ContainerBuilder();
$builder->addDefinitions(config('dependence', []));
$builder->useAutowiring(true);
return $builder->build();

2. 数据库配置

默认策略存储是使用的ThinkORM。
如使用 laravel的数据库 illuminate/database,请按照官方文档按照相应的依赖包:https://www.workerman.net/doc/webman/db/tutorial.html

🚀 (1) 模型配置

以下模型可以二选一,ThinkORM(默认)

📒📒📒 使用ThinkORM(默认) 📒📒📒

  • 修改数据库 thinkorm.php 配置

📕📕📕 使用laravel数据库(可选) 📕📕📕

  • 修改数据库 database.php 配置
  • 修改数据库 permission.phpadapter适配器为laravel适配器

🔰 (2) 创建 casbin_rule 数据表

CREATE TABLE `casbin_rule` (
    `id` BIGINT ( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
    `ptype` VARCHAR ( 128 ) NOT NULL DEFAULT '',
    `v0` VARCHAR ( 128 ) NOT NULL DEFAULT '',
    `v1` VARCHAR ( 128 ) NOT NULL DEFAULT '',
    `v2` VARCHAR ( 128 ) NOT NULL DEFAULT '',
    `v3` VARCHAR ( 128 ) NOT NULL DEFAULT '',
    `v4` VARCHAR ( 128 ) NOT NULL DEFAULT '',
    `v5` VARCHAR ( 128 ) NOT NULL DEFAULT '',
    PRIMARY KEY ( `id` ) USING BTREE,
    KEY `idx_ptype` ( `ptype` ) USING BTREE,
    KEY `idx_v0` ( `v0` ) USING BTREE,
    KEY `idx_v1` ( `v1` ) USING BTREE,
    KEY `idx_v2` ( `v2` ) USING BTREE,
    KEY `idx_v3` ( `v3` ) USING BTREE,
    KEY `idx_v4` ( `v4` ) USING BTREE,
    KEY `idx_v5` ( `v5` ) USING BTREE 
) ENGINE = INNODB CHARSET = utf8mb4 COMMENT = '策略规则表';

📚 (3) 配置 config/redis 配置

重启webman

php start.php restart

或者

php start.php restart -d

用法

快速开始

安装成功后,可以这样使用:

use Casbin\WebmanPermission\Permission;

// adds permissions to a user
Permission::addPermissionForUser('eve', 'articles', 'read');
// adds a role for a user.
Permission::addRoleForUser('eve', 'writer');
// adds permissions to a rule
Permission::addPolicy('writer', 'articles','edit');

你可以检查一个用户是否拥有某个权限:

if (Permission::enforce("eve", "articles", "edit")) {
    echo '恭喜你!通过权限认证';
} else {
    echo '对不起,您没有该资源访问权限';
}

更多 API 参考 Casbin API

资料

效果图(可选)

截图