Utilizando Zend Auth

A Zend Auth serve para autenticar usuários em sua aplicação, ou seja, com ela você pode disponibilizar conteúdos exclusivos somente para quem estiver logado em seu sistema. Ela não distribui níveis de acesso diretamente, você pode configurar esses níveis de acesso e restringir no momento da autenticação ou usar a Zend ACL.

Neste momento não irei criar o formulário de postagem para focar bem na Zend Auth.

Crie dois controllers em sua aplicação, um para login e outro para o logout. Sugiro criar um terceiro controller apenas para testar a autenticação.

No controller dedicado ao login insira

/* Resgata o adaptador do banco de dados utilizado */
$dbAdapter = Zend_Db_Table::getDefaultAdapter();

$authAdapter = new Zend_Auth_Adapter_DbTable(
  $dbAdapter, //adaptador do banco de dados padrão da sua app
  'users', // nome da tabela de usuários
  'usuario', // nome da coluna com o nome do usuário
  'senha', // nome da coluna com o campo da senha
  'sha1(?)' // campo opcional caso a senha seja criptografada
);

/* Opcionalmente você pode capturar estes dados com os setter methods */
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('users')
            ->setIdentityColumn('username')
            ->setCredentialColumn('password');

/* Estou pressupondo que o login e senha foram capturados nas variáveis $username e $password */
$authAdapter->setIdentity($username)->setCredential($password);

/* Variável que guarda o resultado da tentativa de autenticação */
$result = $authAdapter->authenticate();

/* Agora verificamos se o retorno de $result é verdadeiro ou falso */
if($result->isValid()){
  /* Se verdadeiro inicia uma instância do Zend Auth */
  $auth = Zend_Auth::getInstance();
  /* Resgata os dados do usuário, exceto a coluna senha */
  $data = $authAdapter->getResultRowObject(null,'senha');
  /* Grava a seção no sistema */
  $auth->getStorage()->write($data);
  /* Uma vez que o usuário está logado você pode optar por redirecioná-lo ou exibir alguma mensagem */
  $this->_redirect("/");
} else {
  /* Caso o usuário não tenha sido autenticado por algum motivo você registra aqui que atitude tomar */
  $this->view->mensagem = "falhou";
}

No controller responsável pelo logout é bem mais simples.

/* Inicia uma instância de Zend Auth */
$auth = Zend_Auth::getInstance();
$auth->clearIdentity(); // apaga a identidade / encerra a seção
$this->_redirect("/"); // opcionalmente você pode redirecionar para alguma página ou exibir uma mensagem

Ok, e como fazer para saber se o usuário está logado ou não?

Nas páginas onde deseja restringir o acesso, acesse o seu respectivo controller e insira a função preDispatch.

public function preDispatch()
{
  /* Verifica se o usuário não está logado */
  if(!Zend_Auth::getInstance()->hasIdentity())
    // Se não estiver logado, você redireciona para uma página de erro.
    $this->_redirect("/erro");
}