S'authentifier avant de se connecter

S'authentifier avant de se connecter - Java - Programmation

Marsh Posté le 13-04-2015 à 16:01:16    

Bonjour à tous,
 
Je suis en phase finale de mon application et je me trouves bloquer.
Au fait,j'aimerai realiser une page d'authentification des utilisateurs que je crées et accordes les privilèges avec les commandes "CREATE USER"
et "GRANT".Par la suite je me rends comptes que les utilisateurs créés sont dans une base autre que celle sur laquelle je travailles;il s'agit de la base "MYSQL qui est propre au SGBD".
Donc pour moi,afin de parvenir à mes fins,je dois trouver un moyen pour me connecter à cette base (MYSQL) afin que je puisses vérifier si les identifiants que je saisis dans le formulaire de connexion sont dans la table "USER" sinon j'affiche un message d'erreur.Si vous avez une autre manière de faire merci de me l'expliquer ou si vous avez un lien qui peut répondre à mes besoins merci de me le fournir.
 
Voici ce que j'ai tenté sans me connecter à la base "MYSQL" c'est-à-dire j'ai maintenu la connexion à la base de mon projet :
 
Voici le code de la méthode qui selectionne les utilisateurs qui sont dans la table "USER" de la base "MYSQL"
 

Code :
  1. package DAO;
  2. import static DAO.DAOUtilitaire.fermeturesSilencieuses;
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpSession;
  9. import DAOException.DAOException;
  10. import LesObjets.Utilisateur;
  11. public class UtilisateurDaoImpl implements UtilisateurDao{
  12. private static final String selectionUserCons = "select User,Password from user where User = ? and Password  = Password (?)";
  13. private static final String userCons = "user";
  14. private static final String passwordCons = "password";
  15. private DAOFactory daoFactory;
  16. public UtilisateurDaoImpl(DAOFactory daoFactory) {
  17.         this.daoFactory = daoFactory;
  18. }
  19. @Override
  20. public Utilisateur rechercherUtilisateur(String uSer, String passWord,HttpServletRequest request) throws DAOException {
  21.        Connection connexion = null;
  22.        PreparedStatement preparedStatement = null;
  23.        ResultSet resultat = null;
  24.        Utilisateur utilisateur = new Utilisateur();
  25.        try{
  26.         connexion = daoFactory.getConnection();
  27.         preparedStatement = connexion.prepareStatement(selectionUserCons);
  28.       
  29.         preparedStatement.setString(1, uSer);
  30.         preparedStatement.setString(2, passWord);
  31.       
  32.         resultat = preparedStatement.executeQuery();
  33.         if(resultat.next()){
  34.          String user = resultat.getString("User" );//je recupères le nom d'utilisateur trouvé
  35.          String password = resultat.getString("Password" );//je recupères le mot de passe en version hashée
  36.        
  37.          HttpSession session = request.getSession();
  38.        
  39.          session.setAttribute(userCons, user);//je place  le nom d'utilisateur en session
  40.          session.setAttribute(passwordCons, password);//je place le mot de passe en session
  41.        
  42.          utilisateur = Stockage(resultat);
  43.         }
  44.        }catch(SQLException s){
  45.         throw new DAOException("Ces identifiants ne correspondent à aucun utilisateur." );
  46.        }finally{
  47.         fermeturesSilencieuses(resultat,preparedStatement,connexion);
  48.        }
  49. return utilisateur;
  50. }
  51. private  Utilisateur Stockage(ResultSet resultat) throws SQLException {
  52.  Utilisateur util = new Utilisateur();
  53.  util.setUtilisateur(resultat.getString("User" ));;
  54.  util.setMotDePasse(resultat.getString("Password" ));
  55.  return util;
  56. }
  57. }


 
Voici le code de l'objet metier :

Code :
  1. package CoucheMetier;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpSession;
  6. import DAO.UtilisateurDao;
  7. import LesObjets.Utilisateur;
  8. import static CoucheMetier.ValidationFormUtilitaire.*;
  9. public class UtilisateurMetier {
  10. private static final String utiliCons = "NomUti";
  11. private static final String passCons = "Password";
  12. private static final String userRecup = "user";
  13. private static final String passwordRecup = "password";
  14. private UtilisateurDao utilisateurDao;
  15. private Map<String,String> erreurs = new HashMap<String,String>();
  16. private String resultat;
  17. public UtilisateurMetier(UtilisateurDao utilisateurDao){
  18.  this.utilisateurDao = utilisateurDao;
  19. }
  20. public Map<String,String> getErreurs() {
  21.  return erreurs;
  22. }
  23. public void setErreurs(Map<String,String> erreurs) {
  24.  this.erreurs = erreurs;
  25. }
  26. public String getResultat() {
  27.  return resultat;
  28. }
  29. public void setResultat(String resultat) {
  30.  this.resultat = resultat;
  31. }
  32. public Utilisateur infoUtilisateur(HttpServletRequest request){
  33.  String utili = getValeurSaisie(request,utiliCons);
  34.  String pass = getValeurSaisie(request,passCons);/*je dois hasher ce mot de passe recuperé depuis mon formulaire en utilisant la fonction "Password" mais je ne sais comment faire*/
  35.  Utilisateur utilisateur = new Utilisateur();
  36.  traitementNomUtilisateur(utili,utilisateur,request);
  37.  traitementPassword(pass,utilisateur,request);
  38.  if(erreurs.isEmpty()){
  39.   utilisateurDao.rechercherUtilisateur(utili, pass, request);
  40.   resultat = "Ces identifiants sont valides.";
  41.           }else{
  42.      resultat = "Erreur!!!Les identifiants que vous avez saisi sont érronés.";/*j'ai toujours cette erreur dans mon formulaire donc ce qui veut dire le "IF" n'est pas exécuté par conséquent y a une erreur.*/
  43.           }
  44.  return utilisateur;
  45. }
  46. private void traitementPassword(String pass, Utilisateur utilisateur,HttpServletRequest request) {
  47.         try{
  48.          ValidationPassword(pass,request);
  49.         }catch(ValidationChamp v){
  50.   setErreurs(passCons, v.getMessage());
  51.  }
  52. }
  53. private void ValidationPassword(String pass,HttpServletRequest request) throws ValidationChamp {
  54.  HttpSession session = request.getSession();
  55.  String motDepasse = (String) session.getAttribute(passwordRecup);/*je recupères le mot de passe en version hashée que j'ai placé en session lors de l'exploitation de la requête chargée de determiner si un utilisateur existe ou pas en fonction des identifiants que saisis dans le formulaire*/
  56.  if(pass == null || pass.trim().length() == 0){
  57.          throw new ValidationChamp("Ce n'est pas un mot de passe." );
  58.  }
  59.          else if(pass != motDepasse)/*Comparaison du mot de passe recupéré depuis la session et celui récuperé depuis le formulaire de connexion*/{
  60.          throw new ValidationChamp("Mot de passe incorrect." );
  61.  }
  62. }
  63. private void traitementNomUtilisateur(String utili, Utilisateur utilisateur,HttpServletRequest request) {
  64.  try{
  65.   ValidationNomUtilisateur(utili,request);
  66.  }catch(ValidationChamp v){
  67.   setErreurs(utiliCons, v.getMessage());
  68.  }
  69.         utilisateur.setUtilisateur(utili);
  70. }
  71. private void ValidationNomUtilisateur(String utili,HttpServletRequest request) throws ValidationChamp {
  72.  HttpSession session = request.getSession();
  73.  String uti = (String) session.getAttribute(userRecup);/*je recupères le nom d'utilisateur que j'ai placé en session lors de l'exploitation de la requête chargée de determiner si un utilisateur existe ou pas en fonction des identifiants que saisis dans le formulaire*/
  74.  if(utili == null || utili.trim().length() == 0){
  75.          throw new ValidationChamp("Ce n'est pas un nom d'utilisateur." );
  76.         }else if(utili != uti)/*Comparaison du nom d'utilisateur récupéré depuis la session et celui récupéré depuis le formulaire de connexion*/{
  77.        
  78.            throw new ValidationChamp("Ce nom d'utilisateur n'est pas encore possedé." );
  79.         }
  80. }
  81. private void setErreurs(String champ, String message) {
  82.          erreurs.put(champ, message);
  83. }
  84. }


 
Voici le code de la servlet :
 

Code :
  1. package TPServlet;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import CoucheMetier.UtilisateurMetier;
  9. import DAO.DAOFactory;
  10. import DAO.UtilisateurDao;
  11. import LesObjets.Utilisateur;
  12. @WebServlet("/index" )
  13. public class index extends HttpServlet {
  14. private static final long serialVersionUID = 1L;
  15. private static final String indexCons = "/WEB-INF/Index.jsp";
  16. private static final String confDAOFactory = "daoFactory";
  17. private static final String utilMetierCons = "utilMetier";
  18. private static final String utilisateurCons = "utilisateur";
  19. private static final String accueilCons = "/WEB-INF/MonMenu.jsp";
  20.     private UtilisateurDao utilisateurDao;
  21. public void init() throws ServletException {
  22.        this.utilisateurDao = ((DAOFactory) getServletContext().getAttribute(confDAOFactory)).getUtilisateurDao();
  23. }
  24. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  25.       this.getServletContext().getRequestDispatcher(indexCons).forward(request, response);
  26.  }
  27. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  28.          UtilisateurMetier utilMetier = new UtilisateurMetier(utilisateurDao);
  29.          Utilisateur utilisateur = utilMetier.infoUtilisateur(request);
  30.        
  31.          request.setAttribute(utilMetierCons, utilMetier);
  32.          request.setAttribute(utilisateurCons, utilisateur);
  33.        
  34.          if(utilMetier.getErreurs().isEmpty()){
  35.           this.getServletContext().getRequestDispatcher(accueilCons).forward(request, response);
  36.          }else{
  37.           this.getServletContext().getRequestDispatcher(indexCons).forward(request, response);
  38.          }
  39.  }
  40. }

Reply

Marsh Posté le 13-04-2015 à 16:01:16   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed