Jie*_*eng 5 php acl zend-framework
我为我的ACL设置了一个preDispatch插件.我已将控制器用作资源,将操作用作特权.当我尝试转到一个不存在的页面时,我进入拒绝访问页面而不是404,我认为因为查询了资源和权限,因为找不到它们,所以它会进入拒绝访问页面...
我怎样才能解决这个问题?也许我的实现插件的方法是错的?我可以以某种方式检查现有资源b4我的acl插件运行吗?\
插件代码@ 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');
}
}
Run Code Online (Sandbox Code Playgroud)