인증에 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);
Authentication (인증) 어댑터는 새와 함께 새로운 Zend_Auth_Result을 반환 정체. 그 사람들을 위해 나는 stdClass 객체를 사용한다. 이전 ID를 대체합니다. 여기
예로 들어 내 어댑터입니다
<?php
사용 교리 \ ORM \ EntityManager의; 클래스 Altergear_MyApp_UserLoginAuthAdapter이 Zend_Auth_Adapter_Interface 구현 { /** * 로그인 * @var 문자열 $ _login */ 개인 $의 _login; 당신이 Zend_Acl로 작업 할 수 있습니다 상단에
/**
* 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_Controller 플러그인을 추천합니다.
세션에서 누가 로그인을 시도하든 상관하지 않습니다. 브라우저의 세션에 첨부됩니다. 따라서 한 명의 사용자가 로그 아웃하고 같은 브라우저 세션에서 다시 로그인하려고하자마자 삭제하는 데주의해야합니다. – janoliver