casbin/think-authz
Composer 安装命令:
composer require casbin/think-authz
包简介
An authorization library that supports access control models like ACL, RBAC, ABAC for ThinkPHP.
README 文档
README
ThinkPHP Authorization
Think-authz 是一个专为 ThinkPHP 打造的授权(角色和权限控制)工具
它基于 PHP-Casbin, 一个强大的、高效的开源访问控制框架,支持基于ACL, RBAC, ABAC等访问控制模型。
在这之前,你需要了解 Casbin 的相关知识。
安装
使用composer安装:
composer require casbin/think-authz
注册服务,在应用的全局公共文件service.php中加入:
return [ // ... tauthz\TauthzService::class, ];
发布配置文件和数据库迁移文件:
php think tauthz:publish
这将自动生成 config/tauthz-rbac-model.conf 和 config/tauthz.php 文件。
执行迁移工具(确保数据库配置信息正确):
php think migrate:run
这将创建名为 rules 的表。
用法
快速开始
安装成功后,可以这样使用:
use tauthz\facade\Enforcer; // adds permissions to a user Enforcer::addPermissionForUser('eve', 'articles', 'read'); // adds a role for a user. Enforcer::addRoleForUser('eve', 'writer'); // adds permissions to a rule Enforcer::addPolicy('writer', 'articles','edit');
你可以检查一个用户是否拥有某个权限:
// to check if a user has permission if (Enforcer::enforce("eve", "articles", "edit")) { // permit eve to edit articles } else { // deny the request, show an error }
使用 Enforcer Api
它提供了非常丰富的 API,以促进对 Policy 的各种操作:
获取所有角色:
Enforcer::getAllRoles(); // ['writer', 'reader']
获取所有的角色的授权规则:
Enforcer::getPolicy();
获取某个用户的所有角色:
Enforcer::getRolesForUser('eve'); // ['writer']
获取某个角色的所有用户:
Enforcer::getUsersForRole('writer'); // ['eve']
决定用户是否拥有某个角色:
Enforcer::hasRoleForUser('eve', 'writer'); // true or false
给用户添加角色:
Enforcer::addRoleForUser('eve', 'writer');
赋予权限给某个用户或角色:
// to user Enforcer::addPermissionForUser('eve', 'articles', 'read'); // to role Enforcer::addPermissionForUser('writer', 'articles','edit');
删除用户的角色:
Enforcer::deleteRoleForUser('eve', 'writer');
删除某个用户的所有角色:
Enforcer::deleteRolesForUser('eve');
删除单个角色:
Enforcer::deleteRole('writer');
删除某个权限:
Enforcer::deletePermission('articles', 'read'); // returns false if the permission does not exist (aka not affected).
删除某个用户或角色的权限:
Enforcer::deletePermissionForUser('eve', 'articles', 'read');
删除某个用户或角色的所有权限:
// to user Enforcer::deletePermissionsForUser('eve'); // to role Enforcer::deletePermissionsForUser('writer');
获取用户或角色的所有权限:
Enforcer::getPermissionsForUser('eve'); // return array
决定某个用户是否拥有某个权限
Enforcer::hasPermissionForUser('eve', 'articles', 'read'); // true or false
更多 API 参考 Casbin API 。
使用中间件
该扩展包带有一个 \tauthz\middleware\Basic::class 中间件:
Route::get('news/:id','News/Show') ->middleware(\tauthz\middleware\Basic::class, ['news', 'read']);
缓存配置
该扩展包通过配置 config/tauthz.php 中的 cache 选项来开启或关闭缓存,以及配置缓存标识和过期时间。
通过继承 tauthz\cache\CacheHandler 可以实现自定义缓存策略。例如:
class MyCacheHandler extends CacheHandler { public function cachePolicies(Rule $model) { return $model->cacheAlways('my_cache_key', 3600); } }
并在 cache 配置选项中的handler声明此类。
感谢
License
This project is licensed under the Apache 2.0 license.
casbin/think-authz 适用场景与选型建议
casbin/think-authz 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 20.45k 次下载、GitHub Stars 达 275, 最近一次更新时间为 2019 年 07 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「authorization」 「acl」 「permission」 「rbac」 「thinkphp」 「access-control」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 casbin/think-authz 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 casbin/think-authz 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 casbin/think-authz 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Laravel Multiauth package
Ory-Hydra OAuth 2.0 Client Provider for The PHP League OAuth2-Client
A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.
This package provides a flexible way to add Role-based Permissions to Laravel 6.x
This package provides a flexible way to add Role-based Permissions to Laravel
Laravel JWT auth service package
统计信息
- 总下载量: 20.45k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 279
- 点击次数: 29
- 依赖项目数: 7
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2019-07-11