IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Développement des applications Web avec Spring, Hibernate et Richfaces


précédentsommairesuivant

8. Gestion de l'accès à l'application

8-A. Changement de la page d'accueil

On va changer la page d'accueil et on mettra authentification.jsp comme page d'accueil.

On ouvre le fichier web.xml puis on clique sur l'onglet pages

Image non disponible

On clique sur browse puis on choisit Authentification.jsp

Image non disponible
Image non disponible

8-B. Création du Bean «AuthenticationBean »

La dernière étape de notre projet sera la création du bean pour l'authentification et de faire la redirection entre la page d'authentification et les autres pages.

On commence par la création des deux interfaces DAO et Service pour ce bean.

AuthenticationService
Sélectionnez
package Interfaces;
/**
* @author Jihed
 */
import Entity.Personnel;
public interface AuthenticationService {
   public Personnel findByLoginAndPassword(String login, String pass);
}
AuthenticationDAO
Sélectionnez
package Interfaces;
import Entity.Personnel;
/**
* @author Jihed
 */
public interface AuthenticationDAO {
   public Personnel findByLoginAndPassword(String login, String pass);
}


Puis on passe à l'implémentation

AuthenticationDaoImpl
Sélectionnez
package Implementation.dao;
import Entity.Personnel;
import Interfaces.AuthenticationDAO;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
 * @author Jihed
 */
public class AuthenticationDaoImpl extends HibernateDaoSupport implements AuthenticationDAO {
   public Personnel findByLoginAndPassword(String login, String pass) {
       try {
           Personnel pers = (Personnel) getHibernateTemplate().find(" from Personnel pers where pers.persLogin ='" + login + "' and pers.persPassword ='" + pass + "'").get(0);
           return pers;
       } catch (Exception re) {
           re.printStackTrace();
           return null;
       }
   }
}
AuthenticationServiceImpl
Sélectionnez
package Implementation.service;
import Entity.Personnel;
import Interfaces.AuthenticationDAO;
import Interfaces.AuthenticationService;
public class AuthenticationServiceImpl implements AuthenticationService {
   private AuthenticationDAO loginDao;
   public Personnel findByLoginAndPassword(String login, String pass) {
       return loginDao.findByLoginAndPassword(login, pass);
   }
   public AuthenticationDAO getLoginDao() {
       return loginDao;
   }
   public void setLoginDao(AuthenticationDAO loginDao) {
       this.loginDao = loginDao;
   }
}

Déclaration dans le fichier de configuration de Spring

Configuration de Spring
Sélectionnez
<bean id="loginDao" class="Implementation.dao.AuthenticationDaoImpl">
       <property name="hibernateTemplate" ref="hibernateTemplate"/>
   </bean>

<bean id="loginService" class="Implementation.service.AuthenticationServiceImpl">
       <property name="loginDao" ref="loginDao"/>
   </bean>

Création d'un nouveau bean qu'on appelle « AuthenticationBean »

AuthenticationBean
Sélectionnez
package Beans;
import Entity.Personnel;
import Interfaces.AuthenticationService;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
/**
* @author Hsan
 */
public class AuthenticationBean extends messageBean {
   private AuthenticationService loginService;
   private String login;
   private String password;
   private String today;
   private Personnel pers;
   private String message;
   public AuthenticationBean() {
   }
   public String getLogin() {
       return login;
   }
   public void setLogin(String login) {
       this.login = login;
   }
   public String getPassword() {
       return password;
   }
   public void setPassword(String password) {
       this.password = password;
   }
   public String getToday() throws Exception {
       Date maDateAvecFormat = new Date();
       SimpleDateFormat dateStandard = new SimpleDateFormat("EEEE dd MMMM yyyy");
       today = "" + dateStandard.format(maDateAvecFormat);
       dateStandard = null;
       return today;
   }
   public void setToday(String td) {
       this.today = td;
   }
   public String connecter() {
       String droit = null;
       message = "";
       try {
           pers = loginService.findByLoginAndPassword(login, password);
           if (pers != null) {
               if (pers.getPersDroit().equals("user")) {
                   droit = "user";
               } else if (pers.getPersDroit().equals("admin")) {
                   droit = "admin";
               }
               System.out.println("********DROIT*****" + droit);
               return droit;
           } else {
               message = "Échec de connexion, vérifiez votre login et mot de passe !";
               style_message = "err_message";
               this.login = "";
               this.password = "";
               return "invalide";
           }
       } catch (Exception fe) {
           fe.printStackTrace();
           message = "Échec de connexion, vérifiez votre login et mot de passe !";
           this.login = "";
           this.password = "";
           style_message = "err_message";
           return "invalide";
       }
   }
   public String deconnecter() {
       try {
           ExternalContext ExtContext = FacesContext.getCurrentInstance().getExternalContext();
           ExtContext.getSessionMap().clear();
       } catch (Exception ex) {
           ex.printStackTrace();
       }
       return "ok";
   }
   public String getMessage() {
       return message;
   }
   public void setMessage(String message) {
       this.message = message;
   }
   public AuthenticationService getLoginService() {
       return loginService;
   }
   public void setLoginService(AuthenticationService loginService) {
       this.loginService = loginService;
   }
   public Personnel getPers() {
       return pers;
   }
   public void setPers(Personnel pers) {
       this.pers = pers;
   }
}
Image non disponible

8-C. Liaison avec la page Authentification

Page web
Sélectionnez
<%-- 
   Document   : Authentification
   Created on : 25 janv. 2010, 21:30:57
   Author     : jihed
--%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<f:view>
   <h:form>
       <html>
           <head>
               <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
               <title>Authentification</title>
           </head>
           <body >
               <rich:spacer height="200px"></rich:spacer>
               <center >
                   <rich:panel id="logpan" style="background-image:url(#{facesContext.externalContext.requestContextPath}/images/ajax/userauth.png);
                               background-repeat:no-repeat;background-position:-35px -15px;
                               ;width:400px;" header="Authentification" styleClass="panel_3">
                       <h:panelGrid columns="3">
                           <h:outputText value="Login:" />
                           <h:inputText id="log"  value="#{LoginBean.login}" required="true"
                                        requiredMessage="champs obligatoire" />
                           <rich:message for="log" style="color: red"/>
                           <h:outputText value="Mot de passe :" />
                           <h:inputSecret  id="mdp" value="#{LoginBean.password}" required="true"
                                           requiredMessage="champs obligatoire" />
                           <rich:message for="mdp" style="color: red"/>
                       </h:panelGrid>
                       <rich:spacer height="30px"></rich:spacer>
                       <a4j:commandButton value ="Connexion" action="#{LoginBean.connecter}" reRender="logpan"/>
                   </rich:panel>
               </center>
           </body>
       </html>
   </h:form>
</f:view>

8-D. Ajout des « navigation rules »

Les « navigation rules » permettent de définir les redirections entre les pages web dans notre application. Dans notre exemple si le Bean « authentification » va retourner la valeur « invalid » on va rester sur la même page « Authentification ».

Si le Bean retourne la valeur « user » on va être redirigé vers la page « Personnel » et si le bean retourne la valeur « admin » on va être redirigé vers la page « Interventions ».

Ajout des navigations rules

Image non disponible
Image non disponible

8-E. Changement de la page Entête

On va changer un peu dans la structure de l'entête pour pouvoir afficher les détails de la personne connectée.

Page entête
Sélectionnez
<%-- 
   Document   : Entete
   Created on : 25 janv. 2010, 21:47:07
   Author     : jihed
--%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<h:panelGrid columns="12" >
   <rich:spacer width="50px"/>
   <h:outputText   id="dtjr" value="#{LoginBean.today}" styleClass="titre_gris"/>
   <rich:spacer width="225px"/>
   <h:outputText  id="user" value="#{LoginBean.pers.persNom} #{LoginBean.pers.persPrenom}" styleClass="titre_bleu"/>
   <rich:spacer width="6px"/>
   <h:outputText value=" | " styleClass="titre2"/>
   <rich:spacer width="6px"/>
   <h:outputText id="service" value="#{LoginBean.pers.service.servLib}" styleClass="titre_bleu"/>
   <rich:spacer width="225px"/>
   <h:outputText   value="Club CFEM 2010" styleClass="titre_gris"/>
   <rich:spacer width="50px"/>
   <h:form>
       <h:panelGrid columns="3">
           <a4j:commandButton image="/images/ajax/home.gif"
                              onclick="document.location.href='#{facesContext.externalContext.requestContextPath}/faces/Authentification.jsp'" >
               <rich:toolTip  showDelay="500">
                   Acceuil
               </rich:toolTip>
           </a4j:commandButton>
           <rich:spacer width="2px"/>
           <a4j:commandButton action="#{LoginBean.deconnecter}" id="dec_btn" image="/images/ajax/lock.gif"
                              onclick="document.location.href='#{facesContext.externalContext.requestContextPath}/faces/Authentification.jsp'" >
               <rich:toolTip  showDelay="500">
                   Déconnexion
               </rich:toolTip>
           </a4j:commandButton>
       </h:panelGrid>
   </h:form>
</h:panelGrid>
Image non disponible

précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2011 DGHAIES Jihed. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.