您應該使用Zend_Auth進行身份驗證。 更多關於它,你可以在這裏閱讀:manual.zfdes.com/de/zend.auth.html
這是我如何使用Zend_Auth的:
$auth = Zend_Auth::getInstance();
$authAdapter = new Altergear_Seolista_UserLoginAuthAdapter(
$loginForm->getLogin(),
$loginForm->getPassword()
);
$result = $auth->authenticate($authAdapter);
認證適配器返回一個新的組成Zend_Auth_Result用新身份。對於那些我使用stdClass對象。它將取代舊的身份。
這裏是我的適配器作爲一個例子
<?php
使用原則\ ORM \ EntityManager的; 類Altergear_MyApp_UserLoginAuthAdapter實現了Zend_Auth_Adapter_Interface { /** * 登錄 * @var串$ _login */ 私人$ _login;
/**
* The user password
* @var string $_password
*/
private $_password;
/**
* The Doctrine EntityManager
* @var EntityManager $_em
*/
private $_em;
public function __construct($email, $password)
{
$registry = Zend_Registry::getInstance();
$this->_em = $registry->entitymanager;
$this->_login = $email;
$this->_password = $password;
}
/**
* Executes an authentication try
*
* @throws Zend_Auth_Adapter_Exception if the authentication failed
* @return Zend_Auth_Result
*/
public function authenticate()
{
//check if login is correct
try{
$user = $this->_em->getRepository('App_Model_User')
->findOneBy(
array(
'_email' => $this->_login,
'_password' => App_Model_User::encodePassword($this->_password)
)
);
}catch(Exception $e){
throw new Zend_Auth_Adapter_Exception('authentication failed', 0, $e);
}
if($user!==null && $user instanceof App_Model_User && $user->getId() > 0)
{
//login successful
$identity = new stdClass();
$identity->user = $user;
return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS , $identity);
}else{
//login failed
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, NULL, array('Bitte geben Sie gültige Logindaten an.'));
}
在頂部,你可以用Zend_Acl裏工作,我建議你Zend_Controller的插件管理訪問您的控制器和動作。
你的會議不關心誰試圖登錄。它附在瀏覽器的會話中。因此,只要一個用戶註銷並嘗試在同一個瀏覽器會話中再次登錄,您就必須小心刪除它。 – janoliver