2009-07-03 12 views
0

Ich verwende meine eigene Implementierung der UserDetailsService-Schnittstelle, um ein Benutzerobjekt aus der Datenbank zu laden und als UserDetail in meinen SecurityContext zu platzieren. Das Benutzerobjekt ist dann ein losgelöstes Hibernate-Objekt.Spring Security UserDetails Best Practice

Wenn ich auf Lazy Load-Relationen des authentifizierten Benutzers zugreifen möchte, muss ich es aus dem SecurityContext abrufen und erneut an die Hibernate-Sitzung anhängen, indem ich über seine ID oder Merge lade.

Wo machen Sie das normalerweise in einer Spring MVC oder Spring WS Anwendung? In dem Controller, was bedeutet, dass ich das UserDAO in es injizieren muss, oder übergeben Sie die ID in die Serviceebene, um es dort zu laden?

Antwort

3

Nichts davon gehört in den Controller. Legen Sie es in die Service-Ebene.

Controller ist wirklich Teil der Ansicht. Wenn Sie die Ansichtstechnologien ändern, sollte dies den ordnungsgemäßen Betrieb des Service nicht beeinträchtigen. Setzen Sie es dort und injizieren Sie den Service in den Controller.

DAOs gehören aus demselben Grund nicht in Controller.