gpt4 book ai didi

acl - Controller 级别权限

转载 作者:行者123 更新时间:2023-12-02 08:45:02 25 4
gpt4 key购买 nike

考虑以下代码:

$acl = new Phalcon\Acl\Adapter\Memory();

$acl->setDefaultAction(Phalcon\Acl::DENY);

//Register roles
$acl->addRole(new Phalcon\Acl\Role('guest'));
$acl->addRole(new Phalcon\Acl\Role('member', 'guest'));
$acl->addRole(new Phalcon\Acl\Role('admin', 'user'));

$acl->addResource(new Phalcon\Acl\Resource('user'));
$acl->addResource(new Phalcon\Acl\Resource('index'));

$acl->allow('member', 'user', array());
$acl->allow('guest', 'index', array());

$acl->isAllowed('guest','index','index'); //returns false

我想在 Controller 级别授予权限,我的意思是写: $acl->allow('成员(member)', '用户');它授予用户 Controller 操作的成员,我不想手动添加用户 Controller 的所有操作。我该如何实现这个想法?

最佳答案

在名为 INVO 的示例应用程序中有一个很好的实现 Acl 的示例, Security插件实现了一个Acl列表,公共(public)区域的资源使用'*'作为通配符为 Controller 中的每个 Action 添加规则:

<?php

$publicResources = array(
'index' => array('index'),
'about' => array('index'),
'session' => array('index', 'register', 'start', 'end'),
'contact' => array('index', 'send')
);
foreach($publicResources as $resource => $actions){
$acl->addResource(new Phalcon\Acl\Resource($resource), $actions);
}

//Grant access to public areas to both users and guests
foreach($roles as $role){
foreach($publicResources as $resource => $actions){
$acl->allow($role->getName(), $resource, '*');
}
}

关于acl - Controller 级别权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com