16 Fév2016
Formulaire d'authentification en JSP avec envoi des emails
Objectifs :
- Utilisation des sessions.
- Hachage des mots de passe.
- Génération des nombres aléatoire.
- Envoi d'email via JavaMail.
- Requêtes nommées avec Hibernate.
Énoncé :
Soit le diagramme de classe suivant :
Couche accès aux données
- Créer les classes entités dans le package « ma.projet.entity ».
- Créer le fichier de configuration Hibernate dans le package « ma.projet. config ».
- Créer le fichier HibernateUtil permettant de créer une sessionFactory dans le package « ma.projet.util ».
- Créer l’interface IDao dans le pachage « ma.projet.dao ».
Couche Service
- Créer les classes ClientService et EmployeService dans le package « ma.projet.service ».
- Créer une classe de teste pour tester les services.
Couche présentation
- Créer une page d’inscription d’un client. Le mot de passe doit êtes haché (voir Annexe).
- Créer une page d’authentification. Cette page contient :
- Une zone de saisie de login qui aura automatiquement le focus dès l'ouverture de la page, et une zone de saisie de mot de passe pour identifier l’utilisateur.
- Deux liens, le 1èr vers la page de récupération de mot de passe et le 2ème vers la page d’inscription.
-
Renseigner un texte indicatif par défaut dans les champs du formulaire d’authentification. Ces valeurs s'effacent dès que l'utilisateur active ce champ.
-
Une fois le visiteur est identifié, un message de bienvenue, la date et l’heure de système s’affichent. Chaque visiteur sera redirigé vers son espace. (Espace Client, Espace Employe).
3. Au clic sur le lien « Mot de passe oublié », le formulaire suivant s’affiche :
- L’utilisateur doit saisir son email, ensuite le système vérifié l’existence de l’utilisateur et envoi un code généré aléatoirement vers sa boite email s’il existe, dans le cas contraire un message « Email n’existe pas » sera affiché.
- Après l’envoi de l’email l’utilisateur sera redirigé vers une page permettant de saisir le code envoyé :
- Si le code est correct le système demande de saisir le nouveau mot de passe et la confirmation de mot de passe (Une vérification coté client est obligatoire : les deux mots de passe doivent être identique) :
Notes
Session :
Création :
HttpSession session = request.getSession(); session.setAttribute("login", login); session.getAttribute("login") ;
Destruction :
HttpSession session = request.getSession(); session.invalidate();
Fonction de Hachage MD 5 :
public static String MD5(String s) { try { MessageDigest md = MessageDigest.getInstance("MD5"); BigInteger bi = new BigInteger(1, md.digest(s.getBytes())); return bi.toString(16); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); return null; } }
Envoi d’email via JAVA Mail :
public class SendMailTLS { static final String username = "Emetteur [AT] gmail [DOT] com"; static final String password = "password"; public static void send(String s) { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress("Emetteur [AT] gmail [DOT] com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("Recepetrut [AT] gmail [DOT] com")); message.setSubject("Object"); message.setText(s); Transport.send(message); System.out.println("Done"); } catch (MessagingException e) { throw new RuntimeException(e); } } }
Sélectionnez le fichier à afficher.
|