我有以下情况:我有用户,使用DB表进行标准认证
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter()); $authAdapter->setTableName('users'); $authAdapter->setIdentityColumn('user_name'); $authAdapter->setCredentialColumn('password');
当用户编辑他的配置文件时,我将其保存到Db中,但我还需要更新存储(使用标准Zend_Auth_Storage_Session).有什么简单的方法怎么做?非常感谢.
$user = Zend_Auth::getInstance()->getIdentity(); $user->newValue = 'new value';
假设您正在更新数据库的同一语句中更新会话数据,则无需再次调用数据库.
你最好的选择是不使用Zend_Auth的存储来保存可能会改变的信息 - 默认情况下它只保存身份(有充分理由).我可能会创建一个User类,它包含所有Auth,ACL(以及可能的配置文件)功能,这些功能使用静态get_current()方法来加载存储在会话中的用户.这会绕过在将其填充到会话中时遇到的所有一致性问题,并在您实际需要性能提升时为您提供实现缓存的单点.