我有創造我自己的Zend_Auth_Adapter困難。我也在使用Doctrine 2。到目前爲止,我已經......下面創建自己的Zend_Auth_Adapter
代碼我收到錯誤
法「hasIdentity」不存在,並沒有被困在__call()
什麼錯?
use \Doctrine\ORM;
class Application_Auth_Adapter implements Zend_Auth_Adapter_Interface {
private $username;
private $password;
function __construct($username, $password) {
$this->username = $username;
$this->password = $password;
}
function authenticate() {
$em = Zend_Registry::get('em');
$query = $em->createQuery('select u from Application\Entities\User u WHERE u.name = :username')
->setParameter('username', $this->username);
try {
$user = $query->getSingleResult();
$salt = $user->salt;
$hashedPassword = hash_hmac('sha256', $this->password, $salt);
if ($hashedPassword == $user->password) {
// login success
return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $user);
} else {
// wrong password
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID, null);
}
} catch (NonUniqueResultException $e) {
// non unique result
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, null);
} catch (NoResultException $e) {
// no result found
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND, null);
} catch (Exception $e) {
// exception occured
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, null);
}
}
}
UPDATE
我注意到的問題來自ABT線Zend_Auth
if ($this->hasIdentity()) {
$this->clearIdentity();
}
123,但略低於功能,authenticate()
,其
public function hasIdentity()
我發現了一些奇怪的是堆棧跟蹤
#0 [internal function]: Zend_Controller_Action->__call('hasIdentity', Array)
#1 D:\ResourceLibrary\Frameworks\ZendFramework\library\Zend\Auth.php(123): AuthController->hasIdentity()
#2 D:\Projects\Websites\php\ZendFramework\LearningZF\application\controllers\AuthController.php(23): Zend_Auth->authenticate(Object(Application_Auth_Adapter))
#3 D:\ResourceLibrary\Frameworks\ZendFramework\library\Zend\Controller\Action.php(513): AuthController->loginAction()
#4 D:\ResourceLibrary\Frameworks\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('loginAction')
#5 D:\ResourceLibrary\Frameworks\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#6 D:\ResourceLibrary\Frameworks\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#7 D:\ResourceLibrary\Frameworks\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#8 D:\Projects\Websites\php\ZendFramework\LearningZF\public\index.php(26): Zend_Application->run()
#9 {main}
看到AuthController-> hasIdentity()其試圖調用hasIdentity()
從AuthController
!
是不是我轉換所有的魔術方法'__get()__set()''來得到*()集*()'已經,謝謝補充。歡迎來到stackoverflow – 2010-12-26 07:10:37