Einen Benutzer authentifizieren
Benutzer werden über einen Zend_Auth_Adapter authentifiziert. Für dieses Beispiel verwende ich die Authentifizierung über eine Datenbank-Tabelle. Diesem Adapter wird mitgeteilt, welchen Adapter er für die Datenbank-Verbindung verwenden soll, in welcher Tabelle die Zugangsdaten zu finden sind, welche Spalte die Identität und welche das Passwort enthält und zu guter Letzt, wie das Passwort behandelt werden soll.
$authAdapter = new Zend_Auth_Adapter_DbTable(
Zend_Db_Table_Abstract::getDefaultAdapter(), // Datenbank-Adapter
'my_user', // Tabelle
'nickname', // Identität-Spalte
'password', // Passwort-Spalte
'MD5(?)' // Passwort ist MD5 verschlüsselt
);
Normalerweise gibt der sich authentifizierende Benutzer seinen Nicknamen und sein Passwort in ein Formular ein und schickt dieses ab. Die von ihm gegebenen Daten können dann mit dem Zend_Auth_Adapter geprüft werden.
Ich gehe davon aus, dass eine Variable $form eine Zend_Form-Instanz referenziert, mit der gearbeitet werden kann und über die ich die Values der Formular-Felder abrufe:
$values = $form->getValues();
$authAdapter->setIdentity($values['nickname'])
->setCredential($values['password']);
$authResult = My_Auth::getInstance()->authenticate($authAdapter);
if ($authResult->isValid()) {
// Der Benutzer hat korrekte Daten angegeben und wurde erfolgreich authentifiziert
}
Dieser Vorgang muss normalerweise nur einmal durchgeführt werden, nämlich dann, wenn der Benutzer sich einloggt. Danach brauch nur noch geprüft werden, ob eine Identität vorhanden ist.
My_Auth::getInstance()->hasIdentity();
Um zu prüfen, ob der Benutzer auch das entsprechende Recht hat, eine bestimmte Aktion durchzuführen, ruft man My_Acl::isAllowed() mit den entsprechenden Parametern auf.

