CakePHP的Acl插件

安装: 96

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 5

分支: 1

开放问题: 0

类型:cakephp-plugin

dev-master 2015-10-29 04:06 UTC

This package is not auto-updated.

Last update: 2024-10-02 11:42:15 UTC


README

License

一个用于管理CakePHP应用程序中ACL的插件。

插件处于开发初期,我刚开始使用CakePHP不久,请发送建议和建设性的批评。

通过composer安装

您可以使用composer composer 安装此插件。在您的 composer.json 文件中添加以下依赖项

"require": {
	"abreu1234/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']
	]

);

默认情况下,此插件将同步控制器

忽略文件夹和文件

要忽略同步过程中的某些文件夹或文件,请添加具有以下语法的 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。在上面的例子中,我们正在为Controller User 和 Action index 赋予权限。对于无前缀的应用程序根目录,请使用 /

如果需要在前缀内部授权控制器,请使用前缀名称作为 / 之后的部分

$this->loadComponent('Acl.Acl', [
            'authorize' => [
                '/' => [
                    'Users' => ['index'],
                ],
                '/Admin' => [
                    'Users' => ['add'],
                ]
            ],
            'controllers' =>['user'=>'Users']
        ]);

在上面的例子中,我们正在为前缀 Admin 内部的Controller User 和 Action 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 并点击同步链接。重要的是用户必须有访问controller Permission 和 Actions indexsynchronize 的权限

管理权限

要管理用户或组的权限,请访问地址: /acl/user-group-permission 选择用户或组以及权限。要正常工作,用户必须已同步权限,并具有访问controller UserGroupPermission 和 Actions indexgetPermissionaddAjax 的权限