php - Zend 框架 : preDispatch ACL plugin causes requests to non existent page to Access Denied instead of 404

标签 php zend-framework acl

我已经为我的 ACL 设置了一个 preDispatch 插件。我将 Controller 用作资源,将操作用作特权。当我尝试转到一个不存在的页面时,我进入了拒绝访问页面而不是 404,我认为是因为资源和特权被查询并且由于未找到它们,所以它进入了拒绝访问页面......

我该如何解决这个问题?也许我实现插件的方法是错误的?我可以以某种方式检查我的 acl 插件运行的现有资源 b4 吗?\

更新

插件代码@ pastebin

最佳答案

我遇到了同样的问题并将其添加到 preDispatch 函数中(尽管使用模块,但有趣的是 $acl->has() 函数):

if (!$acl->has($request->module . '_' . $request->controller)) {
    // action/resource does not exist in ACL
    $request->setModuleName('default');
    $request->setControllerName('error');
    $request->setActionName('notfound');
} else {
    // resource does exist, check ACL
    if (!$acl->isAllowed($role, $module . '_' . $controller, $action)) {
        $request->setControllerName('user');
        $request->setActionName('login');
    }
}

关于php - Zend 框架 : preDispatch ACL plugin causes requests to non existent page to Access Denied instead of 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3421761/

相关文章:

php - 如何在 Zend Framework 中处理移动设备?

php - Zend Framework findBy 魔术方法?

php - 如何使用 Zend 框架上传多个文件?

php - 我该如何修复此错误 errno : 150 "Foreign key constraint is incorrectly formed"

database - Zend Framework 动态 ACL 具有特殊权限,具体取决于数据库条目

Oracle 19c::无法为指定用户设置 ACL

php - 单击链接后,我试图在 div 中包含一个页面,但它不起作用

php - Carbon 'InvalidArgumentException' 覆盖 $dateFormat 属性时消息为 'Trailing data'

javascript - 如何通过 AJAX 将 html 从 javascript 传递到 php。

php - WooCommerce 如何检查产品是否有货