Zend framework 使用Zend模块时处理Zend Auth数据

Zend framework 使用Zend模块时处理Zend Auth数据,zend-framework,zend-auth,zend-session,zend-session-namespace,Zend Framework,Zend Auth,Zend Session,Zend Session Namespace,我正在为我的项目开发基于zend模块的结构。作为Zend_Authclass'的默认会话存储是Zend_Auth。我根据调用的模块进行了更改。假设对于admin,我使用auth namespaceadmin\u auth,对于默认模块,我使用namespace namedefault\u auth $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session('Admin_Auth'));

我正在为我的项目开发基于zend模块的结构。作为
Zend_Auth
class'的默认会话存储是
Zend_Auth
。我根据调用的模块进行了更改。假设对于admin,我使用auth namespace
admin\u auth
,对于默认模块,我使用namespace name
default\u auth

$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('Admin_Auth'));
我这样做是因为,如果我执行
Zend_Session::destroy()
操作,即使对于默认模块,它也会销毁整个会话。所以在注销时使用名称空间等等
Zend_Session::namespaceUnset('Admin_Auth')

每次在不同的控制器我都要用

$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('Admin_Auth'));
仅指向对应的会话数据

我正在考虑将其移动到模块的
Bootstrap.php

protected function _initAuth(){

    $auth = Zend_Auth::getInstance();
    $auth->setStorage(new Zend_Auth_Storage_Session('Admin_Auth'));

    return $auth;
}
首先,这是正确的方式吗?
其次,如果是,那么如何访问每个控制器中
\u initAuth()
的返回值
$auth
?请

这不起作用,因为每个请求都会运行模块引导,因此每个模块将替换上一个模块的存储。为什么每个模块需要不同的身份验证数据?@timfuntain,因为当我设置
$authStorage->write($identity)时这些数据可供默认模块使用。所以我不希望默认模块有这些数据,好吧,但为什么?如果它试图保护会话数据,那么它只是被写入到
$\u session
,因此无论您使用什么名称空间,它都将始终可用于域上运行的所有PHP脚本。您可以使用带有
preDispatch()
钩子的插件,该钩子测试
moduleName
,并根据需要设置存储。