hanwenbo / policy
该软件包最新版本(2.0.0)没有可用的许可证信息。
2.0.0
2022-11-14 05:32 UTC
This package is auto-updated.
Last update: 2024-09-14 11:51:56 UTC
README
该库已贡献给easyswoole仓库,请大家一起来维护,请访问https://github.com/easy-swoole/policy
policy
用于验证、解析Policy结构和语法
安装
composer require hanwenbo/policy
使用方法
$policyData = [ "Statement" => [ [ "Effect" => "Allow", "Action" => ["goods/*", "goods/list"], ], [ "Effect" => "Allow", "Action" => ["goods/*", "goods/list"], ], [ "Effect" => "Allow", "Action" => ["goods/*", "goods/list"], ], ], ]; $policy = new \hanwenbo\policy\Policy(); $policy->addPolicy( new \hanwenbo\policy\RequestBean\Policy( $policyData ) ); // 可以添加多组,目的:一个用户属于多个角色组的时候,或者一个角色组对应多个存储的policy的时候 $policy->addPolicy( new \hanwenbo\policy\RequestBean\Policy( $policyData ) ); $result = $policy->verify( 'goods/list' ); var_dump( $result );
思路说明
假设是一个FaShop的商城项目
权限应该分为3个表,一个组可以拥有多个策略。为了方便开发者,可以将每个模块的策略预先存入数据库,例如订单模块、商品模块。在给权限组分配权限时,可以选择这些模块(策略)。当验证权限时,查询出所有策略,提交给该库进行验证。
auth_group 角色组
auth_group_policy 角色组拥有的 policy_id 集合
auth_policy 权限策略表
策略表中应包含id、存放json的字段,json格式如下:
{ "Statement": [ { "Effect": "Allow", "Action": [ "goods/*", "goods/list" ] }, { "Effect": "Allow", "Action": [ "goods/*", "goods/list" ] }, { "Effect": "Allow", "Action": [ "goods/*", "goods/list" ] } ] }
待办事项
- 前端路由根据规则生成示例
- 接口应该返回给前端策略列表的示例
- 前端policy验证的库