d3:tp05

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
d3:tp05 [2025/09/28 19:49] – [3. Vérifier cet échange d'identifiant de session avec les outils de développement du navigateur] dthevenotd3:tp05 [2025/10/03 14:09] (Version actuelle) – [Autres évolutions/Améliorations possibles] dthevenot
Ligne 113: Ligne 113:
 Actuellement, la page d'authentification existe, mais il est possible de passer outre : on peut aller  directement à la liste des clients ou créer un nouveau client. (Ex :localhost:8080/Test2Jakarta/NouveauClient).  Actuellement, la page d'authentification existe, mais il est possible de passer outre : on peut aller  directement à la liste des clients ou créer un nouveau client. (Ex :localhost:8080/Test2Jakarta/NouveauClient). 
  
-Après une authentification réussie, il faudra mettre en session un booléen (isAuthentified)  indiquant cette réussite ou non (méthode doPost de la servlet AuthentifServ.java, avant la  redirection). De même, il faudra supprimer cette variable de session au niveau de la méthode  doGet. +L'authentification concerne les salariés de l'entreprise il faut donc les gérer : 
 +  - créer une **table salarie** dans la base de données qui contient leur login, mot de passe et leur rôle (estAdmin, booléen : administrateur ou pas) 
 +  - créer la **javabean SalarieMysql** pour gérer les salariés (2 méthodes : readAll() et lireSalarie((String login, String mdp))) 
 +  - créer une méthode **existeUser**(HttpServletRequest request) dans la classe **AuthentifForm** qui retourne un booléen pour vérifier l'existence de l'utilisateur dans la base de données 
 +  - changer la méthode **controlerAdmin** de la classe AuthentifForm pour utiliser le **rôle** du salarié qui s'authentifie 
 + 
 +Après une authentification réussie, il faudra mettre en session un booléen (**isAuthentified**)  indiquant cette réussite ou non (méthode **doPost de la servlet AuthentifServ.java**, avant la  redirection). De même, il faudra supprimer cette variable de session au niveau de la méthode  doGet. 
  
 Ensuite il faudrait faire en sorte qu'aucune page ne puisse s'afficher sans passer par une  authentification réussie.  Ensuite il faudrait faire en sorte qu'aucune page ne puisse s'afficher sans passer par une  authentification réussie. 
-Cette façon de procéder fonctionne, mais le problème, c'est qu'il faudrait reproduire cette  modification dans toutes les servlets. Ce qui n'est pas satisfaisant. + 
 +<del>Cette façon de procéder fonctionne, mais le problème, c'est qu'il faudrait reproduire cette  modification dans toutes les servlets. Ce qui n'est pas satisfaisant. 
  
 Au lieu d'apporter cette modification dans toutes les servlets, nous allons créer un **filtre**.  Au lieu d'apporter cette modification dans toutes les servlets, nous allons créer un **filtre**. 
Ligne 123: Ligne 130:
  
 Pour créer un filtre :   Pour créer un filtre :  
-  * onglet File>New File>Web>Filter puis Next.  +  * onglet **File>New File>Web>Filter** puis **Next**.  
-  * Nommer ce filtre AuthentifFilter, indiquer le Package com.personnelTP.filter, puis Next  +  * Nommer ce filtre **AuthentifFilter**, indiquer le Package **com.mycompany.filter**, puis **Next** 
-  * Cocher la case "Add information to deployment descriptor (web.xml)", puis Next et Finish  +  * Cocher la case "**Add information to deployment descriptor (web.xml)**", puis **Next et Finish**  
-Remplacer le corps de la méthode doFilter par celui-ci : +Dans la classe AuthentifFilter.java, remplacer le corps de la méthode **doFilter** par celui-ci : 
 <code> <code>
 // Cast de l'objet request  // Cast de l'objet request 
Ligne 140: Ligne 147:
 boolean authentificationOK = false;  boolean authentificationOK = false; 
 if (maSession.getAttribute("isAuthentified") != null) { if (maSession.getAttribute("isAuthentified") != null) {
- authentificationOK = (boolean)   + authentificationOK = (boolean) maSession.getAttribute("isAuthentified"); 
-maSession.getAttribute("isAuthentified"); +
  
 if (authentificationOK) {  if (authentificationOK) { 
Ligne 156: Ligne 162:
  
 Vérifier la présence de 2 nouvelles sections au niveau du fichier web.xml : <filter> et <filter mapping>  Vérifier la présence de 2 nouvelles sections au niveau du fichier web.xml : <filter> et <filter mapping> 
-Peut-être avez-vous remarqué un problème concernant les caractères spéciaux (accent, tréma,  …) saisis dans les formulaires. Pour remédier à ce problème, il faut ajouter un filtre qui permettra  de spécifier le format d'encodage UTF-8 pour les données échangées.  
  
-Télécharger **filtreEncodage.xml** depuis le Driveet en copier le contenu dans votre fichier **web.xml**,  redémarrer le serveur// Tomcat (Services/Serveur/Restart)// et tester.+<del>Peut-être avez-vous remarqué un problème concernant les caractères spéciaux (accenttréma,  …) saisis dans les formulairesPour remédier à ce problèmeil faut ajouter un filtre qui permettra  de spécifier le format d'encodage UTF-8 pour les données échangées
  
-====== Résumé ======+Télécharger **filtreEncodage.xml** depuis le Drive, et en copier le contenu dans votre fichier **web.xml**,  redémarrer le serveur// Tomcat (Services/Serveur/Restart)// et tester. 
 +</del></del> 
 +<bootnote learn>
    
   * Il existe 4 portées d'objets différentes, représentant 4 durées de vie différentes : page,  requête, session et application.    * Il existe 4 portées d'objets différentes, représentant 4 durées de vie différentes : page,  requête, session et application. 
Ligne 175: Ligne 182:
 ArrayList <Salarie> …)  ArrayList <Salarie> …) 
   * La mémorisation d'un attribut de session s'effectue par     * La mémorisation d'un attribut de session s'effectue par  
-<code>maSession.setAttribute("nomAttribut", attribut); </code> +<code>maSession.setAttribute("nomAttribut", attribut); </code></bootnote>
-  * Un **filtre** est un objet Java qui peut modifier les entêtes et le contenu d'une requête http  avant l'intervention d'une servlet. Il pourra être utilisé pour obliger l'utilisateur à  s'authentifier avant d'accéder à l'application  +
-  * C'est dans la méthode doFilter du filtre que l'on vérifiera la présence d'une variable de  session indiquant si l'utilisateur s'est correctement authentifié  +
 ===== V. Amélioration de l’application ===== ===== V. Amélioration de l’application =====
    
Ligne 200: Ligne 204:
   - Quelle méthode de cette servlet sera sollicitée ?    - Quelle méthode de cette servlet sera sollicitée ? 
 ==== 4. Modifier à nouveau la servlet afin d'effectuer la mise à jour dans la base de données et  dans la collection lesNvxClients. ==== ==== 4. Modifier à nouveau la servlet afin d'effectuer la mise à jour dans la base de données et  dans la collection lesNvxClients. ====
 +===== VI.Autres évolutions/Améliorations possibles =====
 +  - suppression d'un client
 +  - hachage du mot de passe
 +  - sécurisation de l'application
 +  - ajout favicon
 +  - ...
 +
  
  • d3/tp05.1759081763.txt.gz
  • Dernière modification : 2025/09/28 19:49
  • de dthevenot