CakePHP 的 Acl 插件

维护者

详细信息

github.com/carlose119/acl

主页

源代码

安装: 2

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 0

分支: 1

类型:cakephp-plugin

v1.0 2018-03-09 14:41 UTC

This package is not auto-updated.

Last update: 2024-09-22 11:07:30 UTC


README

License

基于项目: (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 扩展

(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 及其操作 indexgetPermissionaddAjax 的权限。