В существует удобный механизм осуществления аутентификации. Рассмотрим простой пример его использования.

Для хранения логинов и паролей будет использоваться таблица в базе данных:

CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT , `login` VARCHAR( 20 ) NOT NULL , `password` VARCHAR( 100 ) NOT NULL , `fullname` VARCHAR( 100 ) , PRIMARY KEY ( `id` )
);

Теперь создадим метод, который вызывается при регистрации пользователя. В нем заполняются поля созданой ранее таблицы:

public function processAction(){
	$form = $this->getForm();
	if ($form->isValid($_POST)){
		$fullName = $form->getValue("fullname");
		$login = $form->getValue("login");
		$password = md5($form->getValue("password"));
		$db = DBUtils::getConnection();
		$data = array("fullname" => $fullName, "login" => $login, "password" => $password);
		$db->insert("users", $data);
	}
}

Обратите внимание, что пароль пользователя зашифрован с помощью алгоритма md5.

Осталось реализовать самую важную часть процесса - собственно аутентификацию пользователя. Для этого необходимо создать объект класса Zend_Auth_Adapter_DbTable  конструктор которого принимает объект подключения к базе данных, имя таблицы, содержащей информацию о логинах и паролях, имя колонки с логином, имя колонки с паролем. 

public function processAction() {
	$form = $this->getForm();
	if ($form->isValid($_POST)) {
		$db = DBUtils :: getConnection();
		$auth = Zend_Auth :: getInstance();
		$adapter = new Zend_Auth_Adapter_DbTable($db, "users", "login", "password");
		$adapter->setIdentity($form->getValue("login"));
		$adapter->setCredential(md5($form->getValue("password")));
		$result = $auth->authenticate($adapter);
		$this->view->message = $result->getCode()."<br/>";
		foreach ($result->getMessages() as $message){
			$this->view->message .= $message."<br/>";
		}
	}
}

Метод authenticate класса Zend_Auth возвращает объект класса Zend_Auth_Result который предоставляет методы для получения кода результата (getCode()) и сообщений об ошибках или успехе (getMessages()). Все возвращаемые коды результатов соответствуют константам, определенным в классе Zend_Auth_Result.

Связанные записи