carlose119 / acl
CakePHP 的 Acl 插件
Requires
- php: >=5.4.16
- cakephp/cakephp: ~3.0
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-22 11:07:30 UTC
README
基于项目: (https://packagist.org.cn/packages/abreu1234/acl) 此项目是 https://github.com/abreu1234/acl 的分支。所有感谢归功于用户 abreu1234 的辛勤工作
用于管理 CakePHP 应用程序的 ACL 插件。
通过 composer 安装
您可以使用 composer [Composer] (https://composer.php.ac.cn) 来安装此插件。将以下依赖项添加到您的 composer.json 文件中
"require": { "carlose119/acl": "dev-master" }
现在在您的终端中运行 php composer.phar update
通过在 config\bootstrap.php 中添加以下行来加载插件
Plugin::load('Acl', ['bootstrap' => false, 'routes' => true]);
创建表格
要使用 Migrations 创建插件所需的表格,请在您的终端中执行以下命令
bin/cake migrations migrate -p Acl
加载 Auth 扩展
您需要启动 cakephp 的 Auth 扩展
基本配置
要加载扩展,您必须在您的应用程序的 Controller\AppController.php 中添加用户控制器的名称
$this->loadComponent('Acl.Acl', ['controllers' =>['user'=>'Users']]);
如果您使用组,还必须添加组控制器的名称
$this->loadComponent('Acl.Acl', ['controllers' =>['user'=>'Users','group'=>'Groups']]);
同步插件控制器
要同步插件控制器,只需将配置添加到 plugins 索引即可
$this->loadComponent('Acl.Acl', [ 'controllers' =>['user'=>'Users','group'=>'Groups'], 'plugins' => ['PluginName'] ] );
默认情况下,此插件会同步控制器
配置认证字段
要配置与 CakePhp 默认设置不同的认证字段
$this->loadComponent('Acl.Acl', [ 'authenticate' => [ 'username' => 'email', 'password' => 'password' ], ] );
忽略文件夹和文件
要忽略同步过程中的某些文件夹或文件,只需在 ignore 索引中添加以下配置,并使用以下语法 Prefixo->Pasta/Arquivo->Action。要忽略所有前缀或前缀的文件夹,请添加 *
$this->loadComponent('Acl.Acl', [ 'controllers' =>['user'=>'Users','group'=>'Groups'], 'plugins' => ['PluginName'], 'ignore' => [ '*' => [ '.','..','Component','AppController.php','empty', '*' => ['beforeFilter', 'afterFilter', 'initialize'], 'Permission' => ['add'] ], 'Admin' => [ 'Users' => ['delete'] ] ] ]);
赋予权限
要赋予某些控制器权限而不使用数据库,请添加以下行。
$this->loadComponent('Acl.Acl', [ 'authorize' => [ '/' => [ 'Users' => ['index'], ] ], 'controllers' =>['user'=>'Users'] ]);
使用 authorize 索引,并使用以下语法 Prefixo->Controller->Action。在上面的例子中,我们正在赋予 User 控制器和 index 动作的权限。对于没有前缀的应用程序根目录,请使用 /
如果您需要在前缀内授权控制器,请使用前缀名称后跟 /
$this->loadComponent('Acl.Acl', [ 'authorize' => [ '/' => [ 'Users' => ['index'], ], '/Admin' => [ 'Users' => ['add'], ] ], 'controllers' =>['user'=>'Users'] ]);
在上面的例子中,我们正在给 Admin 前缀的 User 控制器和 add 动作授权
如果您需要授权插件,请使用以下语法 Plugin.Prefix user / 来指定插件根目录
$this->loadComponent('Acl.Acl', [ 'authorize' => [ '/' => [ 'Users' => ['index'], ], '/Admin' => [ 'Users' => ['add'], ], 'Acl./' => [ 'Permission' => ['index','synchronize'], 'UserGroupPermission' => ['index','getPermission','addAjax'] ], ], 'controllers' =>['user'=>'Users'] ]);
上面的例子仅用于安全起见,直到您添加了用户或组的权限后请勿使用。移除这些行后
'Acl./' => [ 'Permission' => ['index','synchronize'], 'UserGroupPermission' => ['index','getPermission','addAjax'] ],
isAuthorized 方法
要验证用户或组,请使用 Auth 扩展的 isAuthorized 方法。在 AppController.php 文件中添加以下代码。
public function isAuthorized($user) { if(!$this->Acl->check()) { $this->Flash->error(__('User or group no access permission!')); return false; } return true; }
同步
要同步控制器和动作,请访问 /acl/permission,点击同步链接。重要的是用户需要有对 Permission 控制器和 index 以及 synchronize 动作的访问权限
管理权限
要管理用户或组的权限,只需访问以下地址:/acl/user-group-permission 选择用户或组,并设置权限。要使用户能够正常工作,需要同步权限,并且需要有访问用户控制器 UserGroupPermission 及其操作 index、getPermission 和 addAjax 的权限。