Bonjour à tous
j'ai une petite question qui me trotte dans l'esprit, sur une "façon de bien programmer" avec Spring.
J'ai réalisé un formulaire de Login simple dans une petite appli web que je suis entrain de faire et dont j'ai parlé précedemment. J'ai modifié la méthode "handleRequest" de cet objet pour récupérer la session existante : en effet, je souhaite que si une personne ait été logguée, elle ne puisse plus accéder à ma page de login via l'URL mais soit redirigée vers une URL autre (la vue "hello" par exemple)
Voici l'handleRequest de mon LoginFormController :
Comme vous pouvez le supposer via le "getSession()" que l'on y voit, j'ai ajouté un attribut "session" de type "HttpSession" dans ma classe. Or je récupère cette session lors de l'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { if(getSession()==null){ this.setSession(arg0.getSession()); } User temp = (User)getSession().getAttribute("CurrentUser"); if (temp== null){ try { return super.handleRequest(arg0, arg1); } catch (Exception e) { logger.error("Error during the handleRequest method of object LoginFormController"); logger.error("Error message : "+e.getMessage()); return null; } }else{ logger.info("User is already loggued in, redirecting to hello view"); return new ModelAndView(new RedirectView("hello")); } }
Avec l'injection de bean de Spring, je me demande maintenant que je commence a bien piger le principe, si au lieu de faire ce
je ne ferais pas mieux de profiter de l'injection et de modifier mon bean loginformcontroller dans mon testlogin-serviette.xml comme suit?? :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if(getSession()==null){ this.setSession(arg0.getSession()); }
où les "????????" sont les "gestionnaires de session" de Spring, mais comme je connais pas leurs noms...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <bean name="/login" class="testlogin.web.LoginFormController"> <property name="sessionForm" value="true" /> <property name="commandName" value="login" /> <property name="commandClass" value="testlogin.service.Login" /> <property name="validator"> <bean class="testlogin.service.LoginValidator" p:userManager-ref="userManager"></bean> <property name="session"> <bean class="?????" p:????????="????????"></bean> </property> <property name="formView" value="login" /> <property name="successView" value="hello" /> <property name="userManager" ref="userManager" /> </bean>
Je présume que je dois utiliser le
mais comme j'en sais strictement rien pour le moment, ben je préfère poser la question (il y a peut-être un autre "sessionManager" dont j'ignore l'existence pour le moment?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
J'espère avoir été clair dans mes explications merci d'avance de l'aide que vous pourriez m'apporter
Partager