Zend framework 使用Zend模块时处理Zend Auth数据
我正在为我的项目开发基于zend模块的结构。作为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_Auth
class'的默认会话存储是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_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
,并根据需要设置存储。