gpt4 book ai didi

zend-framework - Zend框架中模块的访问级别管理

转载 作者:行者123 更新时间:2023-12-04 06:48:45 26 4
gpt4 key购买 nike

模块是否没有 acl 命令拒绝方法。我总是必须添加 Controller 和索引吗?我有一个管理模块和默认模块,其中有十几个 Controller 和三打操作,这真的很烦人

我的代码是这样的

class Management_Access extends Zend_Controller_Plugin_Abstract{

public function preDispatch(Zend_Controller_Request_Abstract $request)
{
// set up acl
$acl = new Zend_Acl();

// add the roles
$acl->addRole(new Zend_Acl_Role('guest'));
$acl->addRole(new Zend_Acl_Role('administrator'), 'guest');

// add the resources
$acl->add(new Zend_Acl_Resource('index'));
$acl->add(new Zend_Acl_Resource('error'));
$acl->add(new Zend_Acl_Resource('login'));

//admin resources
$acl->add(new Zend_Acl_Resource('destination'));
$acl->add(new Zend_Acl_Resource('home'));
$acl->add(new Zend_Acl_Resource('page'));
$acl->add(new Zend_Acl_Resource('tour'));
$acl->add(new Zend_Acl_Resource('hotel'));

有没有办法检查资源是否在 acl 中注册?

更新::
我的默认模块中有八个 Controller ,“管理”模块中有九个 Controller 。

我在管理模块和默认模块中都有索引 Controller 。如果我添加允许访客索引,访客也可以访问管理模块中的索引页面。管理模块仅为管理员设置

最佳答案

两种可能的解决方案:

  • 检查 Controller 插件中的当前模块($request->getModuleName())
  • 在模块 Bootstrap 中实现逻辑(仅适用于您需要的模块)。

  • 更新后编辑:

    您只需要将模块+ Controller 视为资源,将操作视为权限:
    $acl->deny('guest', 'adminmodulename:controllername', array('tour', 'hotel'));

    或全部:
    $acl->deny('guest', 'adminmodulename:controllername');

    isn't there a way to check if resource is registered in acl?



    $acl->有($resource)

    关于zend-framework - Zend框架中模块的访问级别管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815682/

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