Zend_Auth är en modul för att identifiera en användare och säkerställa att användaren är den han/hon utsäger sig för att vara. Zend_Auth innehåller flera "adaptrar" som möjliggör autentisering mot olika källor, t.ex:
• databas
• LDAP
• OpenId
• och fler…
Vi har valt att använda databasen som källa och guiden kommer att förklara Zend_Auth ur databasens synvinkel. Mer om Zend_Auth finns att läsa på sidan http://framework.zend.com/manual/en/zend.auth.html.
När vi använder en databas som källa måste vi ange namnet på användartabellen samt fälten för användarnamnet och lösenordet:
Notera att vår blogg inte hanterar lösenord på ett korrekt och säkert sätt. Lösenordet lagras som klartext i databasen. Lösenordet borde hashas och saltas men det får bli en hemläxa!
Autentisering av användaren skall även göras vid varje HTTP-förfrågan och inte bara då vi vill visa alternativ text i vyn. Mer om hur detta görs får ni veta när vi behandlar Zend_Acl.
• databas
• LDAP
• OpenId
• och fler…
Vi har valt att använda databasen som källa och guiden kommer att förklara Zend_Auth ur databasens synvinkel. Mer om Zend_Auth finns att läsa på sidan http://framework.zend.com/manual/en/zend.auth.html.
När vi använder en databas som källa måste vi ange namnet på användartabellen samt fälten för användarnamnet och lösenordet:
PHP-kod:
$adapter = Zend_Db_Table::getDefaultAdapter();
$authAdapter = new Zend_Auth_Adapter_DbTable($adapter);
$authAdapter->setTableName('users');
$authAdapter->setIdentityColumn('username');
$authAdapter->setCredentialColumn('password');
Sedan måste vi ge adaptern användarnamnet och lösenordet från formulärfältet:
// notera att $_POST används för exemplets skull
$authAdapter->setIdentity($_POST['username]);
$authAdapter->setCredential($_POST['password]);
Nästa steg blir själva autentiseringen:
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if($result->isValid() )
{
$data = $authAdapter->getResultRowObject(null, 'password'); // vi vill inte lagra lösenordet
$auth->getStorage()->write($data);
echo "KTHXBYE";
}
else
{
echo "FAIL";
}
För att se, om användaren är inloggad:
// i princip samma kod finns att hitta i vår view helper Zend_View_Helper_LoggedIn
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity() )
{
$username = $auth->getStorage()->read()->username;
echo "Welcome $username";
}
Autentisering av användaren skall även göras vid varje HTTP-förfrågan och inte bara då vi vill visa alternativ text i vyn. Mer om hur detta görs får ni veta när vi behandlar Zend_Acl.