我有搜索和搜索但没有答案我使用Zend Framework创建用户并成功将记录保存在zend auth中,以便他们自动登录。
我让创建用户工作得很完美但在成功之后我需要启动_getAuthAdpater()并在用户中签名。
我已经实现了以下代码,但它不会将用户数据存储在会话中。这是我的功能。
public function registerAction()
$proUser = new Application_Model_DbTable_ProUser;
$userId = $proUser->addProUser($data['email'], $data['name'], $data['password']);if($userId){
// add new row into proBasic
$proBasic = new Application_Model_DbTable_proBasic;
$proBasic->addProBasic($userId);
// add new row into proService
$proService = new Application_Model_DbTable_proService;
$proService->addProService($userId);
// Create auth session for proUser
$adapter = $this->_getAuthAdapter();
$adapter->setIdentity($data['email']);
$adapter->setCredential($data['password']);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($adapter);
if ($result->isValid()) {
$user = $adapter->getResultRowObject(array(
'proId',
'proName',
'proEmail',
));
$auth->getStorage()->write($user);
return true;
}
return $this->_redirect('/auth/probasic/');
}
这是_getAuthAdapter()函数:
private function _getAuthAdapter()
{
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
$authAdapter->setTableName('proUser')
->setIdentityColumn('proEmail')
->setCredentialColumn('proPassword');
return $authAdapter;
}
我没有收到此代码的错误,但它没有在Auth中存储用户详细信息。我已经找到了100个如何在Zend中创建登录/注册系统的示例,并且没有一个自动登录用户,所以我想知道我是否正在尝试做一些不同的事情。
干杯
学家
答案 0 :(得分:2)
如果您在注册后立即创建会话,则无需对其进行身份验证。如果您使用$proService->addProService($userId)
之后替换所有代码会发生什么:
$auth = Zend_Auth::getInstance();
$auth->getStorage()->write($data['email']);