Von einer DDD-Perspektive ist die Verwaltung von Sitzungen eine eindeutige Reihe von Verhaltensweisen, daher verdient einen dedizierten Dienst. Also erstelle einen solchen Dienst.
Sie können diesen Dienst an Ihre UserService
als Abhängigkeit übergeben, sodass die UserService
den Sitzungsmanager zum Speichern von Authentifizierungsinformationen verwenden kann.
Besser noch, das Konzept der Authentifizierung kann auch als eine bestimmte Reihe von Verhaltensweisen gesehen werden, also erstellen Sie einen Service dafür. Übergeben Sie Ihren UserService
und den Sitzungsmanager als Abhängigkeiten an diesen Authentifizierungsdienst. (So ist der Session Manager nicht mehr eine Abhängigkeit von UserService
.)
Aber auch Authentifizierung kann in mehrere verschiedene Teile aufgeteilt werden, es hängt davon ab, wie weit Sie gehen möchten.
Ich kann Ihnen leider keinen Code zeigen, weil das stark davon abhängen würde, welche Art von Authentifizierung Sie durchführen möchten (HTTP Basic, Formularanmeldung, OAuth, etc), welche Abstraktionsstufe Sie erreichen wollen und Ihre persönlichen Vorlieben. Wenn Sie sehen möchten, wie ein komplexes System aussehen kann, sehen Sie sich die Sicherheitskomponente von Symfony 2, here in the documentation und here on github an.
Und wenn Sie diese Komponente verwenden möchten, können Sie sehen, wie Silex implements it (github) um ein Gefühl dafür zu bekommen, wie Sie es verwenden können.
Exkurs
DDD geht es um viel mehr als Ihren Code in einer bestimmten Art und Weise zu schreiben. Wenn Sie DDD lernen möchten, empfehle ich Ihnen, das Domain-Driven Design: Tackling Complexity in the Heart of Software (das blaue Buch), Implementing Domain-Driven Design (das rote Buch) zu lesen, oder Sie können mit Domain Driven Design Quickly starten, die zum Download verfügbar ist.
Ich empfehle auch dringend Symfony Security-Komponente (oder Spring Security von SpringFramework (Java) auf denen es basiert) wie es komplexe Konzept der Authentifizierung und Autorisierung in kleine Stücke mit klaren Beziehungen bricht. +1 auf. – Crozin