我最近在我的应用程序中添加了一个管理模块。此应用程序具有与主站点的单独身份验证(管理工具可能稍后在不同站点上用于不同的应用程序,管理员用户存储在单独的表中),这会导致问题。由于Zend_Auth的单例特性,我在关键时刻覆盖了我的Zend_Auth实例,并炸毁了我的应用程序。所以......
我想尝试确定引导程序中正在请求哪个模块,并仅加载适当的前端控制器插件。有没有办法确定在此执行点正在请求哪个模块,还是有更好的解决方案?怎么样?下面是bootstrap中初始化前端控制器插件的方法。
受保护的功能_initFrontControllerPluginWithOptions() { $这 - >自举(阵列( 'frontController', “资源加载”, “会话”, ));
//get site specifics
$sessionInfo = $this->getOption("resources");
if ($namespace = $sessionInfo['session']['name']) {
$data = array("cookieName" => $namespace);
} else {
throw new Exception("Authplugin can't find session namespace");
}
$frontController = $this->getResource("frontController");
//register plugins
$frontController->registerPlugin(new GS_Admin_Plugin_Auth_Admin($data));
$frontController->registerPlugin(new GS_Model_Plugin_Auth_User($data));
}
答案 0 :(得分:0)
这不能直接回答你的问题,但我过去处理这种情况的一种方法是为应用程序提供多个入口点,即2个或更多index.php文件。在每个不同的index.php中,您可以设置一个带有定义的标志,该定义指出程序从哪里进入。基于此,您可以加载不同的控制器插件。
为公用文件夹设置的示例可能是:
/index.php
/admin/index.php
从这两个方面你仍然会调用相同的Bootstrap类。