acl-manager / acl
此软件包的最新版本(dev-master)没有提供许可证信息。
CakePHP的AclManager插件
dev-master
2019-07-16 05:57 UTC
Requires
- php: >=5.4.16
- cakephp/cakephp: ~3.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-16 17:47:24 UTC
README
为CakePHP 3创建Acl的插件
注意
目前这是一个稳定的CakePHP 3.0插件。它类似于CakePHP 2中的Acl,但有一些不同。
您可以使用AclManager为所有用户创建访问级别。这同样适用于访问级别插件和控制器
CakePHP的AclManager插件
安装
您可以使用composer将此插件安装到您的CakePHP应用程序中。
安装composer软件包的推荐方法是
composer require acl-manager/acl
配置
步骤1
在您的config\bootstrap.php
文件中
Plugin::load('AclManager', ['bootstrap' => false, 'routes' => true]);
创建表
要创建与ACL相关的表,请运行以下迁移命令
bin/cake migrations migrate -p AclManager
步骤2
您必须创建acos、roles、acos_roles的值。您可以使用插件中的Shell Acl。例如
acos create root plugin
acos create controller Users index
您可以在shell的帮助中查看所有命令。
注意
如果您有前缀,您必须输入prefix_action,例如:admin_index,类似于Cakephp 2
acos create controller Resellers admin_index
步骤3
控制器
您必须在Appcontroller的isAuthorized方法上编写以下代码
public function isAuthorized($user) { if (empty($this->request->params['plugin'])) { $AclManager = $this->loadComponent('AclManager.Check'); if (empty($this->request->params['plugin'])) { $check_action_curent = $AclManager->Check_request('controller', $this->Auth-> allowedActions); if (!$check_action_curent) { return false; }else { return true; } } } }
插件
您必须在您的插件中Appcontroller的isAuthorized方法上编写以下代码
创建等级
您也可以通过控制器创建等级,例如
$Grade = $this->loadComponent('AclManager.Grade'); $Grade->gradecontroller('user','users','admin_edit'); //** $Grade->gradecontroller(name of roll,controller,action); **//
注意
您必须在其他控制器的beforefilter方法上更改方法,例如
class UsersController extends AppController { public function beforeFilter(Event $event = null) { $this->Auth->allow(['edit']); parent::beforeFilter($event);//** we must have parent beforfilter **// } }
此代码是为插件Acl不检查编辑操作。这就是为什么您允许在Auth上编辑。此插件需要开发以完善
享受吧!