11.3 Benutzer in der Datenbank 

Die wohl üblichste Variante der Authentifizierung eines Besuchers ist gegen in der Datenbank gespeicherte Daten. Dies ist mit dem AuthenticationDatabaseTiein einfach mit anderen Authentifizierungsmechanismen zu integrieren.
$credentials = new ezcAuthenticationPasswordCredentials(
$name,
generatePasswordHash( $password )
);
$authentication = new ezcAuthentication( $credentials );
$database = new ezcAuthenticationDatabaseInfo(
ezcDbInstance::get(),
'user',
array( 'login', 'password' )
);
$authentication->addFilter(
new ezcAuthenticationDatabaseFilter( $database )
);
if ( !$authentication->run() )
{
return gpBlogController::getInstance()->mainSignals->emit(
'error',
'Could not authentificate.'
);
}Listing 11.11 Authentifizierung gegen eine Datenbank
Das Beispiel ähnelt selbstverständlich stark dem bereits gezeigten. Zu Beginn wird ein Objekt der Klasse ezcAuthenticationPasswordCredentials mit den Daten des Besuchers erstellt. Welche Methode zur Erstellung des Hash-Werts von dem Passwort verwendet wird, ist abhängig von der Applikation und hier durch den Aufruf der Funktion generatePasswordHash() gekapselt.
Die von dem Tiein zur Verfügung gestellte Klasse ezcAuthenticationDatabaseInfo wird mit der Datenbankverbindung, der Tabelle, in der die Benutzerdaten stehen, und den Spalten, in denen die Daten zu finden sind, konfiguriert. Der ezcDbHandler und seine Verwendung wurden in Kapitel 6, »Datenbankanbindung«, detailliert beschrieben. Durch die explizite Angabe der Spalten ist die Struktur der Tabelle, über die die Abfrage geht, relativ unbedeutend. Allerdings sollten Passwort und Benutzername in der gleichen Tabelle stehen. Der Filter wird anschließend unter Angabe des Objekts mit den Datenbankinformationen erzeugt und dem Authentifizierungsobjekt hinzugefügt.
Für Tabellenstrukturen, auf die dieses schwache Kriterium nicht zutrifft, können Sie einen eigenen applikationsspezifischen Filter schreiben. Dazu muss Ihr eigener Filter die Klasse ezcAuthenticationFilter erweitern, auf der die Methode run() mit der Legitimation aufgerufen wird. Diese Methode kann den Besucher dann anhand dieser authentifizieren und abhängig vom ermittelten Resultat den Status zurückgeben.




Ihre Meinung






