Andreas Korthaus: Überschneidungen zw. Auth, User und Request-Daten

Beitrag lesen

Hi Michael!

Hm. Ich würde den User als Objekt sehen, nicht aber die Authentifizierung desselben. Wieso ist das nicht einfach eine Methode dieses Objektes?

Eigentlich wollt ich hier ein PEAR-Package verwenden. Das ließe sich zwar auch in die User-Klasse implementieren, aber die Authentifizierung ist erheblich komplexer als die User-Klasse, daher habe ich Probleme das so rum zu mischen. Ich würde das schon gerne trennen. Außerdem ist mir eingefallen das ich bei PEAR::Auth gar nichts mit der eigentlichen Authentifizierung zu tun habe, d.h. daher kan ichgar nicht an die Date kommen, und ich kann der Klasse auch keine User-Daten übergeben, da die die Authentifizierung komplett übernimmt. Ich muß dann wohl 2 Abfragen in Kauf nehmen, aber auf der anderen Seite, wieviel Performance kostet das? Ich habe sowieso immer zig Datenbank-Abfragen, d.h. die Datenbank-Verbindung muß eh hergestellt werden, also geht da kaum was verloren durch eine Tabelle mit maximal 20 CHAR-Spalten mit höchtens ein paar 1000 Datensätzen.

Das kommt auf die Definition der Aufgaben-Zuständigkeiten an. Wenn Deine User-Klasse dafür zuständig ist, alles zu tun, was mit den Attributen eines Users zu tun hat (also auch die Authentifizierung), dann sehe ich keine Unsauberkeit.

Hm. Mein Problem liegt wohl darin das ich die Klassen größten Teils noch als Datencontainer betrachte.

Warum nicht beides simultan? Als SQL-Query formuliert:
   SELECT attributes
     FROM user_table
    WHERE username="<value1>"
      AND password="<value2>";
Klappt die Authentifizierung, dann bekommst Du eine Trefferzeile (ich impliziere, daß 'username' primary key ist), wenn nicht, dann bekommst Du nichts.

Das war auch meine erste Idee, hatte dann aber gedacht das hierbei Fehler auftreten können die ich dann gerne in der Auth-Klasse abfangen würde, und nicht in der User-Klasse, oder es können mehrals 1 Datensatz gefunden werden - wobei das dann eien fehlerhafte implementiereung der Schreib-zugriffe wäre, also kann ich das durchaus verwenden. Vielleicht sollte ich doch auf PEAR::Auth verzichten, und doch was eigenes stricken, da könnte ich das dann so machen. Aber mal ehrlich, meinst Du diese eine Datenbank-Abfrage extra ist diesen Aufwand wert? Wieviel würde gespart? 0.02 Sekunden?

Viele Grüße
Andreas