Frage

würde Ich mag Lage sein, einen Basis-Controller in meinem Frühling App zu erstellen, dass unter anderem fest, ob ein Benutzer ein registrierter Benutzer ist oder nicht. Diese Basis-Controller nach dem Muster Template-Design, würde ein abstraktes geschützten Verfahren enthalten, die Controller-Subklassen implementieren würde.

Die abstrakte Methode hätte es eine Instanz von Benutzer, registriert oder anderweitig weitergegeben. Allerdings habe ich keine Ahnung, wie ich das tun würde, da es das scheint von Controllern rein mit der @Controller Anmerkung jeden Controller frei auf ihre Anfrage Behandlungsmethode definiert Verwendung jedoch sie wie.

Würde irgendeine Art von Benutzerserviceklasse zu schaffen, die in jeden Controller injiziert wird und verwendeten ein Benutzer seinen Weg zu validieren, dies zu umgehen? Es stellt sich die Frage (zumindest für mich) wie funktioniert so ein Controller einen Laderaum eines bekommen HttpServletRequest oder das Session-Objekt?

Danke.

War es hilfreich?

Lösung

ich denke, der Basis-Controller ist keine gute Idee, wenn der einzige Code, es zu haben ist für UserAuthentication ist ... statt Spring Security verwenden. Dies ist die beste Option.

Alternativ können Sie Methoden wie diese haben ... einen Blick auf die Feder Bezug nehmen ..

@Controller("loginController")
public class LoginController {    

   @RequestMapping(value="/login.do", method=RequestMethod.POST)
   public String login(Model model, HttpServletRequest request) {

      String userIdFromRequest = (String)request.getParameter("userId");
      String password = (String)request.getParameter("password");

      boolean verified = ...send userIdFromRequest and password to the user service for 
      verification...

      if (verified){
        request.getSession().setAttribute("userId", userIdFromRequest);
      }

   }          

   //More Methods

}

Hat es geholfen?

-SB

Andere Tipps

  1. Definieren Sie eine abstract BaseController, ohne Anmerkungen
  2. Definieren Sie konkrete und abstrakte Methoden
  3. Rufen Sie diese Methoden von Unterklassen (die mit @Controller kommentierten sind), wann immer erforderlich.

Das grundlegende Problem ist, dass annotational Bootstrapping nicht polymorph ist. Ich fand dieses Papier nützlich: http://sanguinecomputing.com/design-pattern-for-hierarchical-controller-organization-with-annotational-configuration-spring-mvc-3/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top