Hyperf Casbin适配于Hyperf 的开源访问控制框架Casbin

仓库地址:https://github.com/donjan-deng/hyperf-casbin

Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。本项目做了Hyperf适配并自带了一个RBAC模型,使用本项目前你需要先学会如何使用Casbin。

简单使用

Casbin只负责访问控制,在RBAC方案中也只是储存用户和角色之间的映射关系,身份认证、管理用户列表或角色列表应由项目自身来管理。

安装

 composer require donjan-deng/hyperf-casbin

发布配置

 php bin/hyperf.php vendor:publish donjan-deng/hyperf-casbin

配置文件config/autoload/casbin.php

运行迁移

php bin/hyperf.php migrate

命令

php bin/hyperf.php casbin:cache-clear //清除缓存

API

use Donjan\Casbin\Enforcer;

为用户添加权限

Enforcer::addPermissionForUser('user1', '/user', 'read');

删除一个用户的权限

Enforcer::deletePermissionForUser('user1', '/user', 'read');

获取用户所有权限

Enforcer::getPermissionsForUser('user1'); 

为用户添加角色

Enforcer::addRoleForUser('user1', 'role1');

为角色添加权限

Enforcer::addPermissionForUser('role1', '/user', 'edit');

获取所有角色

Enforcer::getAllRoles();

获取用户所有角色

Enforcer::getRolesForUser('user1');

根据角色获取用户

Enforcer::getUsersForRole('role1');

判断用户是否属于一个角色

Enforcer::hasRoleForUser('use1', 'role1');

删除用户角色

Enforcer::deleteRoleForUser('use1', 'role1');

删除用户所有角色

Enforcer::deleteRolesForUser('use1');

删除角色

Enforcer::deleteRole('role1');

删除权限

Enforcer::deletePermission('/user', 'read');

删除用户或者角色的所有权限

Enforcer::deletePermissionsForUser('user1');
Enforcer::deletePermissionsForUser('role1');

检查权限,返回 true or false

Enforcer::enforce("user1", "/user", "edit")

更多使用方法详见官方API

多个实例


config/autoload/casbin.php

return [
    'default' => [
        'model' => [
            'config_type' => 'file',
            'config_file_path' => BASE_PATH . '/config/autoload/casbin-rbac-model.conf',
            'config_text' => '',
        ],
        'adapter' => [
            'class' => \Donjan\Casbin\Adapters\DatabaseAdapter::class,
            'table_name' => 'casbin_rule_rbac',
            'connection' => 'default'
        ],
        //...
    ],
    'second' => [
        'model' => [
            'config_type' => 'file',
            'config_file_path' => BASE_PATH . '/config/autoload/casbin-restful-model.conf',
            'config_text' => '',
        ],
        'adapter' => [
            'class' => \Donjan\Casbin\Adapters\DatabaseAdapter::class,
            'table_name' => 'casbin_rule_restful',
            'connection' => 'default'
        ],
        //...
    ],
]

Enforcer::guard('second')->enforce("user1", "data1", "edit");

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值