Injection d'un sessionManager?
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 :
Code:
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"));
}
} |
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.
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
Code:
1 2 3 4
|
if(getSession()==null){
this.setSession(arg0.getSession());
} |
je ne ferais pas mieux de profiter de l'injection et de modifier mon bean loginformcontroller dans mon testlogin-serviette.xml comme suit?? :
Code:
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> |
où les "????????" sont les "gestionnaires de session" de Spring, mais comme je connais pas leurs noms... :P
Je présume que je dois utiliser le
Code:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
mais comme j'en sais strictement rien pour le moment, ben je préfère poser la question :D (il y a peut-être un autre "sessionManager" dont j'ignore l'existence pour le moment?)
J'espère avoir été clair dans mes explications :mrgreen: merci d'avance de l'aide que vous pourriez m'apporter :D